quarta-feira, 30 de maio de 2007

Struts 2: Annotation Action : correção

no post anterior fiz algumas considerações baseados nos primeiros testes que realizei utilizando actions + annotations, porém hoje realizando um novo código verifiquei que é possível utilizar outros métodos alem do execute, padrão de uma classe action e também funcionou para uma POJO Action...

ps.: faltava altera uma configuração no struts.xml para habilitar os outros métodos internos dentro da classe action...

segue os novos códigos do teste agora funcionando:


/WEB-INF/[web.xml] configuração da aplicação
tendo os jar´s básicos do struts 2 e o plugin: struts2-codebehind-plugin-2.x.jar

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_S2AA" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  <display-name>struts2_action_annotations</display-name>  
  <!-- ======= -->   
    <filter>
        <filter-name>struts</filter-name>
        <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
    <init-param>
      <!-- define os pacotes que irá considerar contendo classes actions -->
      <param-name>actionPackages</param-name>
      <!--  para definir mais de um pacote utilize "," -->
      <param-value>actions</param-value>
    </init-param>
    </filter>
  <!-- ======= -->
    <filter-mapping>
        <filter-name>struts</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
  <!-- ======= -->    
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>


Obs.: usando esse tipo de definição de mapeamento de action não é necessário definir nenhum mapeamento no struts.xml para as actions do pacote indicado, porém é necessário habilitar a chamada dinâmica de outros métodos internos da action( aconselho a sempre utilizar como true essa configuração )

/WEB-INF/classes/[struts.xml]
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

  <!-- habilita o uso de outros métodos de action internamente na classe action -->
    <constant name="struts.enable.DynamicMethodInvocation" value="true" />
    <constant name="struts.devMode" value="false" />

  <!-- configuração automática -->
  
</struts>


classe action
package actions;

import org.apache.struts2.config.Result;
import org.apache.struts2.config.Results;

@Results({
    @Result(name="success", value="/jsp/result.jsp"),
    @Result(name="method_1", value="/jsp/result.jsp"),
    @Result(name="method_2", value="/jsp/result.jsp")
})
public class AnnotAction  {
  //--------------------------------------------------------------------------
  private static final long serialVersionUID = 1L;
  //--------------------------------------------------------------------------
  private String message;
  //--------------------------------------------------------------------------  
  public String execute() {
    this.setMessage"Success" );
    return "success";
  }
  
  public String method_1() {
    this.setMessage"Method 1" );
    return "method_1";
  }
  
  public String method_2() {
    this.setMessage"Method 2" );
    return "method_2";
  }
  //--------------------------------------------------------------------------
  public String getMessage() {
    return message;
  }

  public void setMessage(String message) {
    this.message = message;
  }
  //--------------------------------------------------------------------------
}


/jsp/[result.jsp]
<%taglib prefix="s" uri="/struts-tags" %>
<center><s:property value="message"/></center>


no jsp exibe apenas a mensagem =]

agora sim funcionando corretamente...

terça-feira, 29 de maio de 2007

Struts 2: Annotation Action

uma característica interessante do Struts 2 é o suporte a anotações, nesse caso vou falar sobre o suporte para definição de action...


.:verifique o post de correção desse [link]:.


segue os respectivos códigos


/WEB-INF/[web.xml] configuração da aplicação
tendo os jar´s básicos do struts 2 e o plugin: struts2-codebehind-plugin-2.x.jar

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_S2AA" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  <display-name>struts2_action_annotations</display-name>  
  <!-- ======= -->   
    <filter>
        <filter-name>struts</filter-name>
        <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
    <init-param>
      <!-- define os pacotes que irá considerar contendo classes actions -->
      <param-name>actionPackages</param-name>
      <!--  para definir mais de um pacote utilize "," -->
      <param-value>actions</param-value>
    </init-param>
    </filter>
  <!-- ======= -->
    <filter-mapping>
        <filter-name>struts</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
  <!-- ======= -->    
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>


Obs.: usando esse tipo de definição de mapeamento de action não é necessário definir nenhum mapeamento no struts.xml para as actions do pacote indicado


actions.[AnnotationAction] : classe action

package actions;

import org.apache.struts2.config.Result;
import com.opensymphony.xwork2.ActionSupport;

@Result(name="success", value="/jsp/success.jsp")
public class AnnotAction extends ActionSupport {
  private static final long serialVersionUID = 1L;
  public String execute() {
    return "success";
  }  
}


ps.: a página JSP de resultado da action contém nesse exemplo um texto qualquer, apenas para verificar o funcionamento da action...


considerações:


quanto a esse tipo de mapeamento verifiquei que funcionou apenas para o método execute da classe action, sendo que esta herdava de ActionSupport para ser reconhecida como uma action dentro desse pacote....

tentei acessar outros metodos internos na mesma action, mapeada dessa forma, verifiquei que o Struts 2 não localizava tais métodos...


de modo geral esse tipo de action é bom para casos de actions onde conterá apenas um método executor, no caso padrão o public String execute()...

minhas opinião final: achei esse suporte muito fraco, foi menos que minha espectativa inicial :(

Struts 2 + Tiles 2

outra funcionalidade muito utilizada em aplicações web que reduzem o tempo de desenvolvimento referente a interface é o esquema de templates e layout de interface, no caso com Struts 2 temos 2 possibilidades/soluções que podemos utilizar para essa finalidade:

- SiteMesh
- Tiles

no caso como anteriormente tive boas experiências no uso do Tiles junto com o Struts 1, resolvi verificar como está o uso entre Struts 2 com a nova versão do Tiles 2...

um pequeno problema...
opa calma, deixa eu explica, o problema que tive inicialmente foi encontrar uma fonte que realmente contivesse a informação de como realizar a integração entre ambos, a qual fui achar somente em um forum da França, no respectivo [link]

bom vamos aos códigos agora...


[web.xml] configurando a aplicação para utilizar Struts 2 com Tiles 2
( necessário dos jar´s do Struts 2 e do Tiles 2 [usei o 2.0.3, core e api] na lib da aplicação )

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_Struts_Tiles" version="2.4" 
  xmlns="http://java.sun.com/xml/ns/j2ee" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <display-name>Struts Tiles - Example</display-name>
  <!-- ======= -->   
    <filter>
        <filter-name>struts</filter-name>
        <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
    </filter>
  <!-- ======= -->
    <filter-mapping>
        <filter-name>struts</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
  <!-- ======= -->    
  <listener>
      <listener-class>org.apache.tiles.listener.TilesListener</listener-class>
    </listener>  
  <!-- ======= -->    
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.jsp</welcome-file>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>

</web-app>


WEB-INF/[tiles.xml] configuração referente ao layout/templates

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE tiles-definitions PUBLIC
        "-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"
        "http://struts.apache.org/dtds/tiles-config_2_0.dtd">     
<tiles-definitions>
   <!-- definição do layout da página principal -->
   <definition name="template.page" template="/template/layout.jsp">
      <put name="title" value="Struts 2 + Tiles 2"/>
      <put name="header" value="/template/headerMain.jsp"/>
      <put name="menu" value="/template/menuMain.jsp"/>        
      <put name="footer" value="/template/footerMain.jsp" />
   </definition>
   <definition name="welcome.page" extends="template.page">
      <put name="body" value="/jsp/welcome.jsp"/>
   </definition>
</tiles-definitions>


ps.: nessa aplicação defini os respectivos diretório no root da aplicação:
- jsp : para os jsp´s de resultado das action
- template : para os layout de tela a ser setados no Tiles


/template/[layout.jsp] layout da tela

<%taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>
<%taglib prefix="s" uri="/struts-tags" %>
<%-- atributo da request --%>
<tiles:importAttribute name="title" scope="request"/>
<%-- definição do layout --%>
<html>
  <head>
    <!-- recupera o atributo setado na definição do tiles.xml -->
    <title><tiles:getAsString name="title"/></title>
  </head>
  <body>  
    <table width="100%" height="100%">
      <tr bgcolor="yellow">
        <td colspan="2">
          <tiles:insertAttribute name="header" />
        </td>
      </tr>
      <tr>
        <td bgcolor="gray">
          <tiles:insertAttribute name="menu" />
        </td>
        <td>
          <tiles:insertAttribute name="body" />
        </td>
      </tr>
      <tr bgcolor="yellow">
        <td colspan="2">
          <tiles:insertAttribute name="footer" />
        </td>
      </tr>
    </table>  
  </body>
</html>


ps.: os outros .jsp dentro do diretório possui nesse exemplo apenas textos, indicando : [ cabeçalho, meno e rodapé ]


usando como tipo de retorno de uma action, a definição da action deverá conter o seguinte formato:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>

   <package name="base" extends="struts-default">
      <result-types>
         <result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult" />
      </result-types>
        
      <action name="index">
         <result type="tiles">welcome.page</result>
      </action>
   </package>  

</struts>




e com essas dicas já é possível iniciar o uso do Struts 2 integrado com Tiles 2 =]

Struts 2: Saída de stream com parametros dinâmicos

usando o novo framework Struts 2, depois de um tempo brigando com a falta de conhecimento finalmente consegui montar uma action onde seto dinâmicamente os parametros para a definição do result

observe os respectivos códigos:

java: classe action
import java.io.ByteArrayInputStream;
import java.io.InputStream;

public class DynamicStreamAction {
  //--------------------------------------------------------------------------
  // parametros para uso na saída da action
  private String contentType;
  private int contentLength;
  private String contentDisposition;
  // definição da saída do stream
  private InputStream myStream;
  //--------------------------------------------------------------------------
  public String execute() {
    
    // definindo o tipo de conteúdo
    this.setContentType"application/xml" );
    // definindo que será em anexo( solicitará o salvamento do arquivo )
    this.setContentDisposition"attachment; filename=XmlAction.xml" );
    
    
    // definindo o XML de saida
    String xml = "<tag>xml teste de saída áéíóú ç à...</tag>";
        
    // setando o stream para o tributo
    this.setMyStreamnew ByteArrayInputStreamxml.getBytes() ) );

    // definindo o tamanho do contentLength
    this.setContentLengthxml.getBytes().length );    
    return "success";
  }
  //--------------------------------------------------------------------------  
  
  // get´s & set´s

}


respectivo mapeamento da action com definição dos parametros do result, tipo stream dinâmicos
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

    <package name="stream" namespace="/stream" extends="struts-default">

        <action name="dynamic" class="stream.DynamicStreamAction">
      <result name="success" type="stream">
        <param name="inputName">myStream</param>  
        <param name="contentType">${contentType}</param>  
        <param name="contentDisposition">${contentDisposition}</param>
        <param name="contentLength">${contentLength}</param>
      </result>
        </action>

    </package>
</struts>


* Observe: que os parametros definidos no mapeamento da action são respectivamente os mesmo nomes dos atributos da classe action...

sexta-feira, 25 de maio de 2007

Model Driven

nos ultimos tempos, nos atuais frameworks web MVC java tenho visto falar muito sobre Model Driven, mas na prática compreender como que isso se encaixa em um framework MVC fica meio obscuro...

em si a minha compreensão vendo essa característica em uma aplicação web, foi a possibilidade de facilitar o desenvolvimento e trabalhar uma interface baseada em modelos...

* observando na aplicação showcase do Struts 2, por exemplo, facilita o entendimento da aplicação prática de Model Driven.
essa aplicação está disponível junto do struts-2.0.6-all.zip no diretório apps

links para leitura sobre o assunto:
- OMG - Model Driven Architecture
- IMB - An introduction to Model Driven Architecture
- Dataware - MDA (Model Driven Architecture)
- MundoOO - Java e Model Driven Architecture (MDA)
- Portal Java - MDA - Model Driven Architeture
- JavaPro - Java and the Model Driven Architecture

Struts 2: começando

para quem está começando utilizar o Struts 2, recomendo olhar os respectivos links:

- WebWork (Struts 2) In Action [apresentação]
- Starting Struts 2 [e-book]

material em ingles...

terça-feira, 22 de maio de 2007

OpenLaszlo 4.0.2

na terça feira do dia 17/05/2007, foi disponibilizado a nova versão do OpenLaszlo, a qual adicionou novas caracteristicas ao OpenLaszlo.

Uma das novidades dessa versão é o atual suporte para a tag HTML no interior do SWF a qual possibilita a execução de um HTML dentro de uma aplicação OpenLaszlo, também está diponível uma versão prelimirar do suporte para SOAP para DHTML.

Para saber maiores detalhes acesse o [link]

quinta-feira, 17 de maio de 2007

Novidades do Flex 2.0.1

no geral as novidades da nova versão liberada em Março de 2007 são:

. Suporte ao MAC OSX 10.4.7 também para PowerPC Intel
. SDK Ganhou um pacote a mais o mx.modules que foi introducionalmente apresentado pelo Roger Gonzalez em seu blog. [Exemplo de como usar mx:modules]
. CSS em tempo de execução
. asDoc como parte do Flex Builder
. Rendenização de textos
. Atualização na família completa
. Integração com outras ferramentas
. 290 Bugs corrigidos
. Flex Builder baseado agora no Eclipse 3.2 e com maior performance
. Suporte para o Apollo

para maiores detalhes acesso o [link] para o post do Igor Costa que fez um detalhamento referente a essas novidades...

Flex ou OpenLaszlo hoje?

e vamos mais uma vez a saga, agora numa ótima pessoal baseada nos meus ultimos testes
com o OpenLaszlo 4.0 e o Flex 2.0.1...

OpenLaszlo 4.0
essa versão está bem interessante com possibilidade de saída da interface gerada a partir do .lzx tanto para SWF quanto para DHTML, também possui novas funcionalidades/componentes disponibilizados nessa versão como o caso dos componentes referêntes a Audio e Vídeo.
Quanto a ambiente de desenvolvimento atualmente uso o ambiente descrito em um post anterior, sobre como montar esse ambiente, o qual está produtivo e agradavel de trabalhar e possibilita clicar em um componente e arrastar para o código, assim incluindo o código referente ao componente no fonte .lzx em edição

Flex 2.0.1
obs.: o teste anterior que eu havia realizado foi na versão 2 a qual teve alguns detalhes que não me agradaram muito mesmo utilizando o Flex Builder para gerar a interface da aplicação e desenvolver rapidamente...
esses dias atras resolvi olhar como andava o Flex novamente, verifiquei que haviam lançado uma nova versão 2.0.1, a qual teve um upgrade legal, como correção de alguns bugs, inclusão de funcionalidades( uma que me agradou foi a para trabalhar com sistema modular ).
de modo geral mesmo o Flex gerando saída apenas para SWF 9, não vejo isso como desvantagem( eu prefiro as interfaces baseadas em SWF, pois considero com uma qualidade grafica melhor ), outra questão que me assombrava, o pessoal da Adobe deixa o Linux sempre de lado( não que eu seja um usuário assiduo ), porém vasculhando as informações disponíveis na internet acabei encontrando um post descrevendo que fizeram uma versão para Linux ( ver post ) =]
ps.: as características do Flex nos ultimos testes que realizei que me atrairam foi a possibilidade de trabalhar com sistemas modulares, uma funcionalidade chamada de IFrame ( nos locais onde li sobre ), a qual possibilita executar uma página HTML dentro do SWF, e os testes que realizei no Flex Builder 2.0.1 com componentes gerados por mim e depois reutilizados foi muito motivadores =]

Hoje?
então hoje se me perguntarem sobre para desenvolver um sitema baseado nos conceitos RIA e Web 2.0, o que utilizar, Flex ou OpenLaszlo... tendo como base o atual cenário de vantagens e desvantagem que verifiquei nos testes que realizei, atualmente recomento o uso do Flex 2.0.1, devido a produtividade, facilidade de uso, libs disponiveis na web, a atual caracteristica incorporada para suportar sistemas modulares...

ps.: o OpenLaszlo sei que o pessoal está trabalhando( em algo escondido, Sun Microsystems + Laszlo Systems[desenvolvimento] | IBM, CISCO e outras empresas[pesquisas e desenvolvimento interno para suas respectivas empresas] ) e provavelmente irá lançar algo, acredito que ainda esse ano para fazer frente ao Flex 2.0.1


Quanto ao Silverlight e o JavaFX?
bom olhei rapidamente os 2 e não me chamaram muita a atenção não, o Silverlight ao meu ver tem um estilo como o Flex, mas como o Flex atualmente está muito bom não vejo motivos( a mesmo que você trabalhe para Microsoft ) para investir nele, quanto ao JavaFX é o nome oficial de um projeto que um grupo da Sun anteriormente estava desenvolvendo um projeto de codnome F3( acredito que a Sun lançou ele como um meio a tambem entrar na festa diretamente ), mas também os testes que fiz não me animaram nem me agradou a forma de sintaxe do códido...

mas caso queira estudar... conhecimento nunca é de mais, não?

Flex Builder 2.0.1 para Linux

lendo os posts do blog de Igor Costa, referentes ao Adobe Flex vi um post muito interessante dele no qual descreve um feito de um japonês que conseguiu portar o Flex Builder para linux...

[leia mais]

segunda-feira, 14 de maio de 2007

OpenLaszlo: Sun lança o projeto Orbit

no dia 10/05/2007 foi anunciado no Blog do OpenLaszlo, que a Sun lançou oficialmente o projeto Orbit...

O projeto Orbit é outro Runtime para OpenLaszlo o qual utilizando a saída DHTML possibilita a execução do mesmo no J2ME através da emulação de um browser DOM. No página principal diz:

"O projeto Orbit é um visualizador J2ME para conteúdo do OpenLaszlo. É uma aplicação básica pessoal do J2ME a qual utiliza a engine Rhino para executar as aplicações Web 2.0 ( estilo AJAX ) da linguagem LZX do OpenLaszlo"

Leia mais...
Site do projeto Orbit

Apollo & Flex: links interessantes


- [Blog Caelum] Flex2 e VRaptor
- Scale nine CSS para Flex
- [blogblogs] tag Apollo
- 30 Minutes Flex Test-Drive for Java Developers
- Flex 2.0 - Criando seu primeiro aplicativo
- Desvendando o Adobe Flex
- RIAForge
- Flex Style Explorer
- 40 Projetos Flex 2 Open-source
- Adobe® Flex™ 2 Language Reference
- [E-Genial] blog
- Flex.org
- iMaster - Flex
- Flex Java e MySql - Troca de Objetos (Definitivo)
- Adobe Flex 2 Component Explorer
- [technorati] - tag Flex
- Adobe Labs - Apollo
- Adobe Labs Technologies - Apollo
- [MxStudio] Adobe Apollo - A revolução
- [blogblogs] tag Apollo
- Os 5 melhores aplicativos Adobe Apollo
- [Simple Tecnologia] Adobe Apollo
- Flex and Java
- flexlib
- Flex Box
- Adobe News - Smart Category: Flex
- flexcoders
- CFLEX: Community Flex
- Flex Primitive Explorer
- Flexible Experiments
- On Flex
- Igor Costa

quinta-feira, 10 de maio de 2007

OpenLaszlo: criando objetos via script

muitas pessoas que utilizam o OpenLaszlo vendo seu formato de uso em tags, acredito eu que muitos nem sabem da possibilidade de instânciar um objeto via script, o que é uma utilidade muito usual em aplicações onde temos a necessidade por exemplo de gerar janelas dinamicamente ou mesmo de gerenciar melhor a performance da aplicação reduzindo de certa forma o tamanho inicial da aplicação que deverá ser carregada...

no capítulo 28 ( Classes ) o item 4 aborda esse tema de como fazer para realizar e instânciar classes dinâmicamente no OpenLaszlo [link]

ps.: bom para as pessoas que não compreendem muito bem o inglês, olhe diretamente os exemplos de código =]

uma boa prática para o OpenLaszlo é sempre setar o atributo name para as suas instâncias de classes e na definição das tags no fonte do OpenLaszlo, pois facilita o teste, manipulação na janela do console de Debug e no caso das instâncias dinâmicas evita alguns probleminhas eventuais =D

um detalhe a ser observado no seguinte trecho de código:

   <script>
   var foo = new LzView(canvas, {width: 50, height: 50,
         x: 50, y: 100,
         bgcolor: 0,
         name: "myview"});
   </script>


observe ali onde está canvas neste local é onde deve ser indicado onde a instância do novo objeto deve ser alocado, ali pode ser o "name" de uma view qualquer onde deva ser alocado o novo objeto

quarta-feira, 9 de maio de 2007

Tomcat 2 dicas

nos ultimos dias usando a versão 5.5.20 percebi que esta versão não estava mais listando o conteúdo do diretório da aplicação web por padrão, então para habilitar essa funcionalidade faça o seguinte:

no diretório /conf do tomcat, alterar em web.xml o parametro de inicialização

        <init-param>

            <param-name>listings</param-name>

            <param-value>false</param-value>

        </init-param>

mudar para:

        <init-param>

            <param-name>listings</param-name>

            <param-value>true</param-value>

        </init-param>

Obs.: esse parametro pode ser definido tambem em um web.xml de uma aplicação qualquer

outra dica muito util é configurar o seguinte item na inicialização do tomcat:

-server -Xms128m -Xmx384m

isso quer dizer: -Xms128m > alocação de memória RAM em MB
-Xmx384m > tamanho máximo de paginação em disco em MB

ps.: os valores são apenas ilustrativos, mas para aqueles casos de uma aplicação maior onde normalmente lhe ocorra os erros de OutOfMemory, jogar uns 256 MB para o processo do Tomcat ou 512 MB normalmente resolve o problema durante um bom tempo =]

segunda-feira, 7 de maio de 2007

Goobuntu: boato que anda pela net

a algum tempo que vi na internet um boato do qual a Google estaria de certa forma vendo algo relacionado a um Sistema Operacional baseado em alguma parceria usando como base o Ubuntu...

por minha parte apoio totalmente essa ideia do boato que anda na internet, então vamos fazer uma campanha Pró Goobuntu =D

no site MeioBit também foi abordado esse tema com o seguinte título:
Goobuntu: Google OS baseado em linux

ps.: me pergunto se isso é o que anda causando desespero na Microsoft nos ultimos dias...

Mas nem tudo são alegrias nessa vida...
MeioBit: Mais sobre o Goobuntu

porém queria eu que o pessoal do Google desse um apoio ao Ubuntu, ia ser interessante =]

OpenLaszlo: requisitos de hardware

outra dúvida frequente é relacionado a qual a especificação mínima de hardware para utilizar o OpenLaszlo...

bom no Site do OpenLaszlo sugere as seguintes configurações:

máquina cliente:
qualquer SO com um web browser que possua o plugin do Flash versão 6 ou superior, porém no site foi listado algumas configurações nas quais o OpenLaszlo foi testado...

* Windows XP / 2000
- Firefox 1.5
- Internet Explorer 6.0.2
* Mac OS X 10.3 / 10.4
- Firefox 1.5
- Safari 2.0.3
* Linux 2.6 kernel
- Firefox 1.5

de uma olhada no site, pois possui uma tabela completa descrevendo onde foi realizado os testes

máquina servidor:
como o OpenLaszlo o runtime é implementado em java...
- qualquer servidor com suporte java 1.4 ou superior
- um servidor ou container de servlets ( Tomcat 5 ou superior )
- 175 MB de espaço livre em disco.
- 512 MB RAM de memória física.
- recomendado mínimo 800 MHz, ou mais( clock de processamento ).

OpenLaszlo: Eclipse: montando um projeto blank

bom a grande questão da maioria das pessoas das quais tenho conhecimento é a dificuldade de montar um projeto no qual utilize o OpenLaszlo nele...

tendo como base o IDE Eclipse 3.2 ( referente ao post do ambiente de desenvolvimento )

para criar um novo projeto no Eclipse:

1 - vá em novo projeto, opção Web, crie como um Dynamic Web Project
2 - utilize o openlaszlo-4.0.0-servlet.war descompacte o seu conteúdo
3 - do conteúdo do servlet copie o diretório /lps da raíz da app descompactada do servlet para o diretorio /WebContent do seu projeto
4 - do conteúdo do servlet copie o diretório /WEB-INF/lps da app descompactada do servlet para o diretorio /WebContent/WEB-INF/ do seu projeto
5 - do conteúdo do servlet copie o diretório( os .jar ) /WEB-INF/lib da app descompactada do servlet para o diretorio /WebContent/WEB-INF/lib do seu projeto
6 - do conteúdo do servlet copie o conteúdo do /WEB-INF/web.xml as seguintes linhas abaixo e atualize no /WebContent/WEB-INF/web.xml do seu projeto:

    <servlet>
        <servlet-name>LPS</servlet-name>
        <servlet-class>org.openlaszlo.servlets.LZServlet</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>LZViewer</servlet-name>
        <servlet-class>org.openlaszlo.servlets.LZViewer</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>AuthenticationServlet</servlet-name>
        <servlet-class>AuthenticationServlet</servlet-class>
    </servlet>
    <servlet>
      <servlet-name>AxisServlet</servlet-name>
      <servlet-class>
org.apache.axis.transport.http.AxisServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>
LPS</servlet-name>
        <url-pattern>
*.lzx</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>
LPS</servlet-name>
        <url-pattern>
*.lzo</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>
LZViewer</servlet-name>
        <url-pattern>
/LZViewer</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>
AuthenticationServlet</servlet-name>
        <url-pattern>
/AuthenticationServlet</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
      <servlet-name>
AxisServlet</servlet-name>
      <url-pattern>
*.jws</url-pattern>
    </servlet-mapping>



após tendo feito isso você já tera a infra básica de um novo projeto web, agora então basta incluir os .jar de seu framework preferido e acrecentar as configurações necessárias no /WebContent/WEB-INF/web.xml

ps.: como está ( em tese utilizando o ambiente proposto ), na perspectiva Servers adicione um novo item e selecione o seu projeto criado, com isto facilita o gerenciamento do seu projeto e o uso do servidor, no caso o Tomcat, também essa opção auxilia e facilita o Debug do projeto, utilizando a opção Debug do server...

sexta-feira, 4 de maio de 2007

Gtalk: em flash

hoje de manha lendo novas notícias e pesquisando sobre novidades RIA acabei vendo no blog do Lucas Marçal um post sobre o Gtalk em uma versão em flash, fiz uns testes e achei bem legal =]

exemplo da interface:


Para mais informações acesse
Fonte da Notícia
Outra referência
Blog do Gtalk
Site do Gtalk

quarta-feira, 2 de maio de 2007

OpenLaszlo: integrando com Spring MVC e XStream

a quem interessar nesse [link], uma breve descrição de como realizar essa integração

Obs.: em ingles

OpenLaszlo: ambiente de desenvolvimento

para montar um ambiente para desenvolver aplicações em geral e também com suporte a codificação do .lzx do OpenLaszlo, utilize os seguintes itens relacionados abaixo:

- Eclipse WTP 1.5.x all in one, como base da IDE [pege a última versão Release]
- Apache Tomcat 5 ou superior
- Plugin do Sysdeo para o Tomcat
- Plugin Spket IDE 1.5.7, que foi comentado em um post anterior [link]
- openlaszlo-4.0.0.war ( Dev Kit )

ps.: utilize o openlaszlo-4.0.0-servlet.war ( Servlet ) como base de um novo projeto web usando OpenLaszlo e acrescente os jars e as configurações necessárioas para utilizar um determinado framework MVC de sua preferencia

ps2.: lembre de depois de ter o seu Eclipse montado com os respectivos plugins, ir em Window > Preferences e configurar os seguintes itens:
- Java > Installed JREs ( alterar do diretório do JRE para o diretorio do JSDK )
- Server > indicar o tomcat
- Tomcat > indicar a versão e localização do tomcat
- Spket > Laszlo ( após ter gerado o diretorio do dev kit com o .war, indicar para o local onde foi gerado. ex.: "...\apache-tomcat-5.5.20\webapps\openlaszlo-4.0.0" )

Obs.: eu ainda não testei um ambiente utilizando o Java 6, apenas o Java 5...