<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>MouseOver Studio &#187; jboss</title>
	<atom:link href="http://www.mouseoverstudio.com/blog/category/jboss/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.mouseoverstudio.com/blog</link>
	<description></description>
	<pubDate>Wed, 25 Aug 2010 02:03:38 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5</generator>
	<language>en</language>
			<item>
		<title>Classloaders e aplicações isoladas no JBoss</title>
		<link>http://www.mouseoverstudio.com/blog/2008/06/24/classloaders-e-aplicacoes-isoladas-no-jboss/</link>
		<comments>http://www.mouseoverstudio.com/blog/2008/06/24/classloaders-e-aplicacoes-isoladas-no-jboss/#comments</comments>
		<pubDate>Tue, 24 Jun 2008 22:48:19 +0000</pubDate>
		<dc:creator>Diego Carrion</dc:creator>
		
		<category><![CDATA[Tutoriales]]></category>

		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[java]]></category>

		<category><![CDATA[jboss]]></category>

		<category><![CDATA[tomcat]]></category>

		<category><![CDATA[classloader]]></category>

		<category><![CDATA[classloading]]></category>

		<category><![CDATA[ear]]></category>

		<category><![CDATA[isolação]]></category>

		<category><![CDATA[isolation]]></category>

		<guid isPermaLink="false">http://www.mouseoverstudio.com/blog/?p=90</guid>
		<description><![CDATA[Tudo começou com uma discussão sobre o classloader do Java. A discussão surgiu porque existiam duas aplicações que queriam compartilhar dados de uma classe estática localizada numa biblioteca x. Nesse momento surgiu a seguinte pergunta: 
Como isolar aquelas duas aplicações de modo que possam utilizar uma biblioteca compartilhada que não possa ser utilizada por uma [...]]]></description>
			<content:encoded><![CDATA[<p>Tudo começou com uma discussão sobre o classloader do Java. A discussão surgiu porque existiam duas aplicações que queriam compartilhar dados de uma classe estática localizada numa biblioteca x. Nesse momento surgiu a seguinte pergunta: </p>
<p><strong>Como isolar aquelas duas aplicações de modo que possam utilizar uma biblioteca compartilhada que não possa ser utilizada por uma terceira aplicação?</strong></p>
<p>Para responder a pergunta era necessário entender o conceito de classloader e também como trabalham os classloaders do servidor envolvido, que nesse caso era o JBoss.</p>
<p>Caso alguem não entenda muito bem o que são os classloaders e como eles trabalham, pode ler esse excelente <a href="http://nullability.org/?p=95">post</a> e lapidar o aprendizado com esse <a href="http://www.kumpera.net/blog/index.php/2007/05/09/classloader-hell/">feedback</a> muito bom do Rodrigo Kumpera.</p>
<p>Vou dizer que menti faz um pouco. Na verdade não é necessário entender o conceito de classloader para poder isolar aplicações devido a que JBoss torna o processo muito simples e transparente, mas eu acho conveniente para ter uma idéia de como funciona o negócio, o que é realizado por trás.</p>
<p>Mas então, o que deve ser feito? Existem varias alternativas mas a mais simples é criar um arquivo .ear contendo os projetos desejados e alterar o arquivo ear-deployer.xml localizado na pasta deploy do servidor JBoss. No arquivo mencionado devera ser trocado o valor do atributo <em>Isolated</em> para true:</p>
<p><code class="prettyprint">&lt;attribute name=\&quot;Isolated\&quot;&gt;true&lt;/attribute&gt;</code></p>
<p>O JBoss utilizara um classloader para cada deploy ear, pelo que as aplicações dentro dele ficaram num contexto isolado.</p>
<p>Agora, o que acontece se eu <strong>tenho somente uma aplicação e quero que ela fique totalmente isolada</strong>, preciso por ela num ear? Não, nesse caso não, seria meio que uma gambiarra. No caso que queiramos um classloader para uma única aplicação e não um grupo delas o que devemos fazer é colocar as bibliotecas que desejamos sejam carregadas pelo classloader na pasta WEB-INF/lib da aplicação. Não tenho certeza se isto é uma especificação mas o JBoss Web e o Tomcat entendem que o que esta dentro da pasta WEB-INF é somente visível para a própria aplicação pelo que não teria sentido se as bibliotecas dentro da pasta lib fossem carregadas por um classloader de alto nível.</p>
<p>Finalmente, eu<strong> quero que minhas bibliotecas sejam visíveis para tudo mundo</strong>, onde devo colocar elas? Nesse caso a resposta é mais fácil, nesse caso basta colocar a biblioteca na pasta lib do servidor ou dentro de uma pasta (lib de preferencia) dentro do projeto ear, somente não esquecer de declarar ela no arquivo application.xml:</p>
<p><code class="prettyprint">&lt;library-directory&gt;lib&lt;/library-directory&gt;</code></p>
<p>Isso e tudo, não se esqueçam que agora a pagina conta com um formulário de contato e toda duvida sera respondida com plácer =)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mouseoverstudio.com/blog/2008/06/24/classloaders-e-aplicacoes-isoladas-no-jboss/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Protegendo nossos data sources no JBoss com senhas criptografadas</title>
		<link>http://www.mouseoverstudio.com/blog/2008/02/14/protegendo-nossos-data-sources-no-jboss-com-senhas-criptografadas/</link>
		<comments>http://www.mouseoverstudio.com/blog/2008/02/14/protegendo-nossos-data-sources-no-jboss-com-senhas-criptografadas/#comments</comments>
		<pubDate>Fri, 15 Feb 2008 01:11:29 +0000</pubDate>
		<dc:creator>Diego Carrion</dc:creator>
		
		<category><![CDATA[criptografia]]></category>

		<category><![CDATA[jboss]]></category>

		<category><![CDATA[seguridade]]></category>

		<category><![CDATA[java]]></category>

		<category><![CDATA[senha]]></category>

		<guid isPermaLink="false">http://www.mouseoverstudio.com/blog/?p=66</guid>
		<description><![CDATA[Normalmente quando trabalhamos com aplicações que acessam o bancos de dados temos um arquivo xml com a configuração do nosso data source (usuário, senha, ip do banco, nome do schema, &#8230;), algo assim:
&#60;datasources&#62;
&#160;&#160;&#60;local-tx-datasource&#62;
&#160;&#160;&#160;&#160;&#60;jndi-name&#62;UnknowDS&#60;/jndi-name&#62;
&#160;&#160;&#160;&#160;&#60;connection-url&#62;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;jdbc:mysql://localhost:3306/unknow
&#160;&#160;&#160;&#160;&#60;/connection-url&#62;
&#160;&#160;&#160;&#160;&#60;driver-class&#62;com.mysql.jdbc.Driver&#60;/driver-class&#62;
&#160;&#160;&#160;&#160;&#60;user-name&#62;unknow&#60;/user-name&#62;
&#160;&#160;&#160;&#160;&#60;password&#62;desconhecido&#60;/password&#62;
&#160;&#160;&#160;&#160;&#60;exception-sorter-class-name&#62;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter
&#160;&#160;&#160;&#160;&#60;/exception-sorter-class-name&#62;
&#160;&#160;&#160;&#160;&#60;metadata&#62;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#60;type-mapping&#62;mySQL&#60;/type-mapping&#62;
&#160;&#160;&#160;&#160;&#60;/metadata&#62;
&#160;&#160;&#60;/local-tx-datasource&#62;
&#60;/datasources&#62;
O problema com data sources como o do exemplo é que a senha da base se encontra explicitamente no arquivo xml. Se por [...]]]></description>
			<content:encoded><![CDATA[<p>Normalmente quando trabalhamos com aplicações que acessam o bancos de dados temos um arquivo xml com a configuração do nosso data source (usuário, senha, ip do banco, nome do schema, &#8230;), algo assim:</p>
<p><code class="prettyprint" style="overflow:scroll">&lt;datasources&gt;<br />
<br />&nbsp;&nbsp;&lt;local-tx-datasource&gt;<br />
<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;jndi-name&gt;UnknowDS&lt;/jndi-name&gt;<br />
<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;connection-url&gt;<br />
<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jdbc:mysql://localhost:3306/unknow<br />
<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;/connection-url&gt;<br />
<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;driver-class&gt;com.mysql.jdbc.Driver&lt;/driver-class&gt;<br />
<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;user-name&gt;unknow&lt;/user-name&gt;<br />
<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;password&gt;desconhecido&lt;/password&gt;<br />
<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;exception-sorter-class-name&gt;<br />
<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter<br />
<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;/exception-sorter-class-name&gt;<br />
<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;metadata&gt;<br />
<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;type-mapping&gt;mySQL&lt;/type-mapping&gt;<br />
<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;/metadata&gt;<br />
<br />&nbsp;&nbsp;&lt;/local-tx-datasource&gt;<br />
<br />&lt;/datasources&gt;</code></p>
<p>O problema com data sources como o do exemplo é que a senha da base se encontra explicitamente no arquivo xml. Se por algum motivo alguma pessoa não desejada ler o arquivo, ela vai descobrir a senha da base sem o mínimo esforço. Felizmente, o JBoss possui uma classe chamada SecureIdentityLoginModule que consegue criptografar uma senha e posteriormente ao reconhecer que a senha no data source é criptograda, descriptografar ela automaticamente para fazer o login na base, tudo isso de maneira muitos simples.</p>
<p>O primeiro passo é criptografar a senha. Para isso vamos ir no console na pasta home do JBoss e rodar o seguinte comando (substituindo *senha* pela senha desejada) :</p>
<p><em>java -cp lib/jboss-common.jar:server/default/lib/jbosssx.jar:server/default/lib/jboss-jca.jar org.jboss.resource.security.SecureIdentityLoginModule *senha*</em></p>
<p>O console respondera com uma mensagem similar a essa:</p>
<p><em>Encoded password: 3edbf2d83a1d270c795cf4eabe7274d2</em></p>
<p>O segundo passo é abrir o arquivo login-config.xml situado na pasta conf do server em uso e adicionar o seguinte dentro do nodo policy, colando a senha criptografada na tag module-option com parametro name igual a password:</p>
<p><code class="prettyprint">&lt;application-policy&nbsp;name=&quot;MySecurityDomain&quot;&gt;<br />
<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;authentication&gt;<br />
<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;login-module&nbsp;flag=&quot;required&quot;<br />
<br />code=&quot;org.jboss.resource.security.SecureIdentityLoginModule&quot;&nbsp;&gt;<br />
<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;module-option&nbsp;name=&quot;username&quot;&gt;<br />
<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unknow<br />
<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/module-option&gt;<br />
<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;module-option&nbsp;name=&quot;password&quot;&gt;<br />
<br />		5dfc52b51bd35553df8592078de921bc<br />
<br />	&nbsp;&nbsp;&nbsp;&nbsp;&lt;/module-option&gt;<br />
<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;module-option&nbsp;name=&quot;managedConnectionFactoryName&quot;&gt;<br />
<br />		jboss.jca:name=UnknowDS,service=LocalTxCM<br />
<br />	&nbsp;&nbsp;&nbsp;&nbsp;&lt;/module-option&gt;<br />
<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/login-module&gt;<br />
<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;/authentication&gt;<br />
<br />&lt;/application-policy&gt;</code></p>
<p>O último passo é ir na configuração do nosso data source e substituir </p>
<p><code class="prettyprint">&lt;user-name&gt;unknow&lt;/user-name&gt;<br />
<br />&lt;password&gt;desconhecido&lt;/password&gt;</code></p>
<p>por</p>
<p><code class="prettyprint">&lt;security-domain&gt;MySecurityDomain&lt;/security-domain&gt;</code></p>
<p>Agora temos uma senha criptografada e mais segura.</p>
<p>Somente umas coisas para lembrar no caso que aconteça algum erro: o valor da tag security-domain no data source tem que ser igual ao valor do parametro name na tag aplication-policy no arquivo login-config.xml. Na tag module-option com name igual a managedConnectionFactoryName, o valor name do jboss.jca deve ser igual ao nome do nosso data source e o service compativel com o tipo do mesmo. Em outras palavras, se nosso data source for xa, o service devera ser XATxCM . No nosso caso o data source e local então o service fica como LocalTxCM .</p>
<p>Para mais informação, pode acessar a <a href="http://wiki.jboss.org/wiki/Wiki.jsp?page=EncryptingDataSourcePasswords">página</a> no wiki do JBoss.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mouseoverstudio.com/blog/2008/02/14/protegendo-nossos-data-sources-no-jboss-com-senhas-criptografadas/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Recompilação dos últimos links interessantes</title>
		<link>http://www.mouseoverstudio.com/blog/2008/01/19/recompilacao-dos-ultimos-links-interessantes/</link>
		<comments>http://www.mouseoverstudio.com/blog/2008/01/19/recompilacao-dos-ultimos-links-interessantes/#comments</comments>
		<pubDate>Sat, 19 Jan 2008 14:24:15 +0000</pubDate>
		<dc:creator>Diego Carrion</dc:creator>
		
		<category><![CDATA[Ajax]]></category>

		<category><![CDATA[JavaScript]]></category>

		<category><![CDATA[Tutoriales]]></category>

		<category><![CDATA[comunidade]]></category>

		<category><![CDATA[eclipse]]></category>

		<category><![CDATA[iphone]]></category>

		<category><![CDATA[java]]></category>

		<category><![CDATA[jboss]]></category>

		<category><![CDATA[livrarias]]></category>

		<category><![CDATA[programação]]></category>

		<category><![CDATA[qualidade]]></category>

		<guid isPermaLink="false">http://www.mouseoverstudio.com/blog/?p=52</guid>
		<description><![CDATA[Nesses ultimos dias, a IBM publicou alguns artigos interessantes como os chamados Generar aplicações web Ajax J2EE com jpa2web, Criar aplicações ricas com JavaFX Script, a segunda parte da serie Aplicações Ajax sólidas: Construindo back ends ou Comezando com Grails: Construindo tua primeira aplicação Grails.
Também nesses últimos dias chegamos a conhecer alguns projetos interessantes como [...]]]></description>
			<content:encoded><![CDATA[<p>Nesses ultimos dias, a IBM publicou alguns artigos interessantes como os chamados <a href="http://www.ibm.com/developerworks/web/library/wa-aj-jpa2web/index.html?ca=drs-">Generar aplicações web Ajax J2EE com jpa2web</a>, <a href="http://www.ibm.com/developerworks/web/library/j-javafx/index.html?ca=drs-">Criar aplicações ricas com JavaFX Script</a>, a <a href="http://www.ibm.com/developerworks/web/library/wa-aj-backend/index.html?ca=drs-">segunda parte da serie Aplicações Ajax sólidas: Construindo back ends</a> ou <a href="http://www.ibm.com/developerworks/web/library/j-grails01158/index.html?ca=drs-">Comezando com Grails: Construindo tua primeira aplicação Grails</a>.</p>
<p>Também nesses últimos dias chegamos a conhecer alguns projetos interessantes como o <a href="http://josql.sourceforge.net/">JoSQL</a> que nos permite executar código SQL para selecionar coleções de objetos, similar ao LINQ da plataforma .NET e o <a href="http://www.trentrichardson.com/jsonsql/">JsonSQL</a> que funciona similar mas para objetos em JavaScript, notação Json. Outros trabalhos interessante são os feitos na livraria <a href="http://vikjavev.no/highslide/">Highslide JS</a> que nos ajuda a simular o efeito do conhecido lightbox nas nossas aplicações, o <a href="http://www.crap4j.org/">Crap4j</a> que se encarrega de qualificar nosso código Java em função a diferentes métricas, o <a href="http://www.creamtec.com/products/ajaxswing/">AjaxSwing</a>, que magicamente converte nossos projetos em Swing para aplicações web Ajax, o <a href="http://code.google.com/p/cajuscript/">CajuScript</a>, uma simples e poderosa implementação de script para usar com Java feito no território nacional, o <a href="http://www.mibbit.com/">Mibbit</a>, um chat que trabalha com o protocolo IRC e desenvolvido com Ajax e finalmente o <a href="http://jiggyapp.com/">Jiggy</a>, que nos permite criar aplicações para o iPhone de maneira muito simples e fácil. </p>
<p>Algumas leituras interessantes sobre Java e Design Patterns foram selecionadas também. Uma de elas é a conversação que se deu no forum GUJ chamada <a href="http://www.guj.com.br/posts/list/13316.java">Então você gostaria de saber sobre AOP?</a> que trata sobre a programação orientada a aspectos ou as que encontramos no site <a href="http://www.corej2eepatterns.com/Patterns2ndEd/index.htm">Core J2EE Patterns</a>, com muita informação sobre os diferentes design patterns da especificação J2EE. Outro site interessante é <a href="http://www.domaindrivendesign.org/">Domain Driven Design</a>, com muita informação sobre o tema que leva o mesmo nome.</p>
<p>Alguns tutoriais e artigos técnicos interessantes que chamaram nossa atenção foram aqueles chamados <a href="http://drnicwilliams.com/2008/01/04/autotesting-javascript-in-rails/">Autotestando JavaScript em Rails</a>, de Dr. Nic, que explica como testar nossos scripts em JavaScript desde um script em Rails, <a href="http://blog.morrisjohns.com/javascript_closures_for_dummies">Clousures do JavaScript para Dummies</a>, de Morris Johns, que ensina de maneira muito clara como funcionam os poderosos clousures em JavaScript, um excelente <a href="http://www.eustaquiorangel.com/downloads/tutorialruby.pdf">tutorial sobre Ruby</a> escrito por Eustaquio Rangel no seu periodo de aprendizagem da linguagem e <a href="http://www.jboss.org/?module=bb&#038;op=viewtopic&#038;t=75697">Ultimo tutorial JAAS para comunicação com a base de dados</a> que partiu de uma duvida no forum do JBoss sobre como implementar a especificação de seguridade e autenticação JAAS utilizando a base de dados num servidor de aplicação JBoss.</p>
<p>Também relacionado com JBoss, seguridade e autenticação são os wiki <a href="http://wiki.jboss.org/wiki/Wiki.jsp?page=SecureJBoss">SecureJBoss</a> que é uma fonte de conhecimento compartilhada sobre como configurar o JBoss para máxima seguridade e a definicação na Wikipedia de <a href="http://en.wikipedia.org/wiki/Single_sign_on">Single sign-on (SSO)</a> que consiste em criar um único sistema de autenticação para diferentes aplicações.</p>
<p>O software livre não ficou atrás e assim chegamos a conhecer o <a href="http://www.winlibre.com/en/">WinLibre</a>, um portal com muito software livre para o sistema operativo Windows. Os que deixaram Windows atrás ficaram contentes ao ver o post chamado <a href="http://www.vagabondodigitale.com/2008/01/10-sites-offering-free-linux-courses-online.html">10 sites oferecendo cursos de Linux online de graça</a>, do blog italiano Vagabondo Digitale, que recompilo alguns sites como o da IBM ou da Novell com excelentes cursos. Para os que gostam de especialmente Ubuntu, foi interessante conhecer a revista <a href="http://fullcirclemagazine.org/">Full Circle Magazine</a> que trata sobre tudo o relacionado com o sistema operativo Ubuntu e também o programa <a href="http://ubuntu-tweak.com/downloads">Ubuntu Tweak</a>, que oferece muitas opções para alterar o mesmo. Muita gente pode estar querendo instalar o Java 6 no Ubuntu para treinar para alguma prova e o processo fica muito fácil depois de ler o artigo do Mundo Hev chamado <a href="http://mundohev.com/2007/12/28/instalando-java-16-no-ubuntu/">Instalando Java 6 (1.6) no Ubuntu</a>. Uma vez o Java corretamente instalado, a <a href="http://www.javaranch.com/roundup.jsp">pagina sobre as certificações Java</a> no portal JavaRanch pode nos ajudar bastante.</p>
<p>Voltando aos browsers, foi muito legal ver a <a href="http://www.amaltas.org/svgapp/">aplicação de demonstração de SVG</a> criada por Amaltas, o <a href="http://docs.jquery.com/Release:jQuery_1.2.2">release 1.2.2 do jQuery</a>, a <a href="http://extjs.com/blog/2007/07/10/css-selectors-speed-myths/">comparação dos diferentes CSS Selectors</a> em torno a velocidade realizada pelo pessoal do Ext JS e também a enorme quantidade (perto de 1000) de exemplos sobre Ajax, JavaScript e Dhtml que encontramos no site <a href="http://www.ajaxrain.com/">AjaxRain</a>.</p>
<p>Finalmente, outros dois links interessantes foram o do <a href="http://www.redmonk.com/cote/2007/12/12/eclipse-rap-overview-and-demo-screencast/">Overview sobre Eclipse RAP e o Screencast de demostração</a> criado por Michael Coté e o artigo escrito por Daniel Tenner chamado <a href="http://www.inter-sections.net/2007/11/13/how-to-recognise-a-good-programmer/">Como reconhecer um bom programador</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mouseoverstudio.com/blog/2008/01/19/recompilacao-dos-ultimos-links-interessantes/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Eclipse, JBoss, Struts2, EJB3.0 na mesma máquina: começar assim!</title>
		<link>http://www.mouseoverstudio.com/blog/2008/01/02/eclipse-jboss-struts2-ejb30-na-mesma-maquina-comecar-assim/</link>
		<comments>http://www.mouseoverstudio.com/blog/2008/01/02/eclipse-jboss-struts2-ejb30-na-mesma-maquina-comecar-assim/#comments</comments>
		<pubDate>Wed, 02 Jan 2008 11:28:53 +0000</pubDate>
		<dc:creator>Diego Carrion</dc:creator>
		
		<category><![CDATA[Tutoriales]]></category>

		<category><![CDATA[eclipse]]></category>

		<category><![CDATA[ejb]]></category>

		<category><![CDATA[java]]></category>

		<category><![CDATA[jboss]]></category>

		<category><![CDATA[struts]]></category>

		<category><![CDATA[ejb3.0]]></category>

		<category><![CDATA[struts2]]></category>

		<guid isPermaLink="false">http://www.mouseoverstudio.com/blog/?p=39</guid>
		<description><![CDATA[Faz pouco tempo quis começar um projeto que utilizasse o application server e o web server ou web container na mesma máquina, no mesmo domínio. Não passou muito tempo ate descobrir que não ia dar certo do jeito que eu estava fazendo.
O que eu tinha feito foi criar uma Dynamic Web Application no Eclipse e [...]]]></description>
			<content:encoded><![CDATA[<p>Faz pouco tempo quis começar um projeto que utilizasse o application server e o web server ou web container na mesma máquina, no mesmo domínio. Não passou muito tempo ate descobrir que não ia dar certo do jeito que eu estava fazendo.</p>
<p>O que eu tinha feito foi criar uma Dynamic Web Application no Eclipse e seguidamente organizar meus pacotes. O problema era que no processo de deploy da minha aplicação, ela era compactada como um arquivo .war e por tal motivo JBoss não fazia o deploy dos meus EJB’s, esperando que eles estejam num arquivo .jar . Tentei então exportar minhas classes na mão para um arquivo .jar e ver que dava. Efetivamente o JBoss fez o deploy de meus EJB’s, mas aconteceu um problema: as classes ficaram repetidas no classpath, pelo que começaram a aparecer erros de CastException.</p>
<p>Comecei a pesquisar e pesquisar e terminei descobrindo que a solução era muito simples (e eu achando que ia ser complicado). A solução a meu problema consistia em criar dois projetos: um projeto EJB e um segundo projeto Dynamic Web Application, incluindo o primeiro no Class Path.</p>
<p>A continuação segue um possível caminho a seguir para começar a desenvolver uma aplicação com Eclipse, Struts2 e EJB utilizando JBoss desde o zero. No caso que alguma pessoa se encontre perdida num problema similar a o que eu teve, esta guia vai poder ajudar. Qualquer duvida por favor perguntar nos comentários. Estarei utilizando Eclipse Europa, JBoss v4.2, Struts2 e EJB3.0.</p>
<p>Dentro do Eclipse, começamos assim:</p>
<ol>
<li>
		File > New > Other.. . Dentro da pasta Web escolher Dynamic Web Project e fazer click em Next.
	</li>
<li>
		Escolher o nome do nosso projeto web server, o Target Runtime (JBoss v4.2 no meu caso) e fazer click em Finish. No caso de não tiver nenhum runtime configurado, passar para o ponto 2.1. Caso contrario, ir para o ponto 3.
<p />
<ol>
<li>
				Para configurar o runtime fazer click em New e dentro da pasta JBoss escolher JBoss v4.2. Seguidamente, fazer click em Next.<br />
				<center><br />
					<a href="/blog/tutoriales/3/1.jpg" rel="lightbox" class="imagelink"><br />
						<img alt="" src="/blog/tutoriales/3/1_t.jpg"/><br />
					</a><br />
				</center>
			</li>
<li>
				Escolher o JRE a utilizar e o diretório onde foi instalado o servidor. Terminar o processo de configuração do runtime fazendo click em Finish.
			</li>
</ol>
</li>
<li>
		File > New > Other.. . Dentro da pasta EJB escolher EJB Project e fazer click em Next. Escolher o nome do nosso projeto application server, o Target Runtime (o mesmo que no ponto 2) e fazer click em Finish.
	</li>
<p>	<center><br />
		<a href="/blog/tutoriales/3/2.jpg" rel="lightbox" class="imagelink"><br />
			<img alt="" src="/blog/tutoriales/3/2_t.jpg"/><br />
		</a><br />
	</center></p>
<li>
		Dentro do projeto do application server, click direito na pasta ejbModule > New > Interface . Escolher como nome do pacote com.mouseoverstudio.com.ejb e como nome da interface Teste. Fazer click em Finish. Nossa interface ficara da seguinte maneira:</p>
<pre class="prettyprint">
package com.mouseoverstudio.com.ejb;

import javax.ejb.Local;

@Local
public interface Teste {

    public String getMensagem();

}
</pre>
</li>
<li>
		Click direito na pasta ejbModule > New > Class. Escolher novamente como package com.mouseoverstudio.com.ejb e TesteBean como nome da classe. Fazer click em Add e escolher a interface Teste, dentro do pacote atual. Seguidamente fazer click em Ok e logo em Finish. Nossa classe TesteBean ficara assim:</p>
<pre class="prettyprint">
package com.mouseoverstudio.com.ejb;

import javax.ejb.Stateless;

@Stateless
public class TesteBean implements Teste {

    public String getMensagem() {
	return “EJB3.0@MouseOver Studio”;
    }

}
</pre>
</li>
<li>
		Copiar os arquivos .jar localizados na pasta lib dentro do diretório do Struts e colocar eles dentro da pasta /mos-web-server/WebContent/WEB-INF/lib
	</li>
<li>
		No projeto web server, click direito na pasta principal > Build Path > Configure Build Path… . Escolher a aba Projects seguidamente de Add… , escolher o projeto application server, fazer click em Next e terminar o processo de importação fazendo click em Next novamente.
	</li>
<li>
		Abrir para edição o arquivo WebContent/WEB-INF/web.xml dentro do projeto web server e adicionar o seguinte código dentro do nodo web-app. Seguidamente salvar.</p>
<pre>
<code class="prettyprint">
&lt;filter&gt;
        &lt;filter-name&gt;struts2&lt;/filter-name&gt;
        &lt;filter-class&gt;
            org.apache.struts2.dispatcher.FilterDispatcher
        &lt;/filter-class&gt;
&lt;/filter&gt;
&lt;filter-mapping&gt;
        &lt;filter-name&gt;struts2&lt;/filter-name&gt;
        &lt;url-pattern&gt;/*&lt;/url-pattern&gt;
&lt;/filter-mapping&gt;
</code>
</pre>
</li>
<li>
		Dentro da pasta src, criar o arquivo struts.xml:<br />
<code class="prettyprint"><br />
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;<br />
&lt;!DOCTYPE struts PUBLIC &quot;-//Apache Software Foundation//DTD Struts Configuration 2.0//EN&quot; &quot;http://struts.apache.org/dtds/struts-2.0.dtd&quot;&gt;<br />
&lt;struts&gt;<br />
        &lt;package name=&quot;main&quot; namespace=&quot;/&quot; extends=&quot;struts-default&quot;&gt;<br />
                &lt;action name=&quot;teste&quot; class=&quot;com.mouseoverstudio.action.TesteAction&quot;&gt;<br />
                        &lt;result name=&quot;input&quot;&gt;/main.jsp&lt;/result&gt;<br />
                &lt;/action&gt;<br />
        &lt;/package&gt;<br />
&lt;/struts&gt;<br />
</code>
	</li>
<li>
		Click direito na pasta src > New > Other… . Dentro da pasta Java escolher Class e fazer click em Next. O nome do package sera com.mouseoverstudio.action e o nome da classe TesteAction. Seguidamente fazer click em Finish. Segue o código da nova classe:</p>
<pre class="prettyprint">
package com.mouseoverstudio.action;

import javax.naming.InitialContext;
import javax.naming.NamingException;

import com.mouseoverstudio.com.ejb.Teste;
import com.opensymphony.xwork2.ActionSupport;

public class TesteAction extends ActionSupport {

        private String mensagem;

        public String execute() throws NamingException {
                System.out.println("Executando TesteAction.execute");
                InitialContext ctx = new InitialContext();
                Teste t = (Teste) ctx.lookup("TesteBean/local");
                mensagem = t.getMensagem();
                return INPUT;
        }

        public String getMensagem() {
                return mensagem;
        }

}
</pre>
</li>
<li>
		Dentro da pasta WebContent, criar o arquivo main.jsp com o seguinte modelo:<br />
<code class="prettyprint"><br />
&lt;%@ taglib prefix=&quot;s&quot; uri=&quot;/struts-tags&quot; %&gt;<br />
&lt;html&gt;<br />
        &lt;head&gt;MouseOver Studio&lt;/head&gt;<br />
        &lt;body&gt;<br />
                &lt;s:property value=&quot;mensagem&quot;/&gt;<br />
        &lt;/body&gt;<br />
&lt;/html&gt;<br />
</code>
	</li>
<li>
		Acessar File > New > Other… . Dentro da pasta Server escolher Server e fazer click em Next. Dentro da pasta JBoss escolher Boss v4.2 e fazer click em Next duas vezes. Selecionar os projetos criados e fazer click em Add. Terminar o processo fazendo click em Finish.
	</li>
<li>
		Acessar Window > Show View > Other… . Dentro da pasta Server escolher Servers e fazer click em Ok.
	</li>
<li>
		Na aba Servers, fazer click direito no servidor JBoss e despois na opção start.
	</li>
<li>
		Quando o server terminar de iniciar, acessar http://localhost:8080/mos-web-server/teste.action
	</li>
</ol>
<p>Isso foi tudo, não esqueçam de perguntar sobre qualquer dúvida. Ate mais.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mouseoverstudio.com/blog/2008/01/02/eclipse-jboss-struts2-ejb30-na-mesma-maquina-comecar-assim/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
