Duvidas sobre aplicação 12ee

Beleza galera?

Em todos os projetos em que trabalhei com j2ee sempre a página jsp foi colocadano mesmo ear em que se encontra o ejb, ou seja dentro o ear eu tenho um war que corresponde a view e um jar com os ejbs mas, agora gostaria de usar clientes swing pra acessar os ejb’s, mas pra isso eu não gostaria de instalar um jboss na máquina de cada cliente e ter que baixar toda a aplicação.
Tem alguma forma de eu deixar 100% desacoplado o cliente dos componentes ejb?

Instalar um JBoss em cada cliente??? 8O

Deus me livre de um negocio desses!

A ideia é justamente deixar eles lá no servidor de aplicações, é só você configurar o endereço do servidor e pronto…

[code]Properties config = new Properties();

config.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
config.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");
config.put(Context.PROVIDER_URL, "jnp://192.170.13.20:1099");

InitialContext context = new InitialContext(config);
Object obj = context.lookup("MeuEJB");[/code]

192.170.13.20 é o ip do servidor do JBoss, coloca o seu, claro!

Vê se é isso que quer, qualquer coisa é só falar!

Beleza?
Até aí tudo bem, mas tem mais uma coisa
Eu preciso criar um objeto do mesmo tipo da inerface remota como fazer isso se no vaso minha alicação cliente não tem acesso as interfaces e jar’s no servidor?

Obrigado!

Na verdade, você deve deixar as interfaces remotas no teu cliente. Elas são um “elo” de ligação do cliente com o serviço.

:okok:

Agora entendo.
Mas e no caso da inerface local e da home local? Vou então que usar na minha aplicação cliente o arquivo j233-server.jar porque preciso da interface EJBRemote e EJBHome correto?

Valeu galera!

Sim, no JBoss tem um jar só com as classes para o cliente, tente encontrar ele aí, acho que algo como client-all.jar, alguma coisa assim, aí você vai ter a implementação de EJB pra levar pro cliente!

Obrigado pela ajuda galera,
vou tentar aqui, qualquer dúvida volto a incomodá-los.
Obrigado!

E aí galera beleza?
Segui as recomendações acima citadas mas mesmo assim tenho problemas
Ao executar o cliente o console apresenta o seguinte erro:

[java] javax.naming.NoInitialContextException: Cannot instantiate class: org.jnp.interfaces.NamingContextFactory [Root exception is java.lang.ClassNotFoundException: org.jnp.interfaces.NamingContextFactory]

meu build.xml está assim:

<?xml version="1.0" encoding="iso-8859-1" ?>
<project name="testeCliente" default="compile" basedir=".">
	
	<path id="meuClasspath">
		<pathelement location="D:\pessoais\leandro\Desktop\alicacao\testeCliente\lib\HelloWorld.jar"/>
		<pathelement location="C:\opt\jboss-4.0.4.GA\server\default\lib\jboss-j2ee.jar"/>
            <pathelement location="C:\opt\jboss-4.0.4.GA\client\jbossall-client.jar"/>
    </path>
	
	<property name="myClasspath" refid="meuClasspath" />
	
	<target name="init">
		<echo> Setando as propriedades.</echo>
		<property name="src" value="src"/>
		<property name="dist" value="build"/>
		<property name="deploy" value="deploy"/>
		
	</target>
	
	<target name="clean" depends="init">
		<echo> Excluindo arquivos compilados e pasta que os contém.</echo>
		<deltree dir="${dist}"/>
		<deltree dir="${deploy}"/>
	</target>
	
	<target name="prepare" depends="clean">
		<echo>Criando pasta dist que conterá arquivos compilados.</echo>
		<mkdir dir="${dist}"/>
		<mkdir dir="${deploy}"/>
	</target>
	
	<target name="compile" depends="prepare">
		<echo>Compilando fontes.</echo>		
		<javac srcdir="${src}" destdir="${dist}">
			<classpath>
				<pathelement path="${myClasspath}"/>
			</classpath>
                       
		</javac>
	</target>
	
	<target name="dist" depends="init, clean, prepare, compile">
		<echo> Gerando o .jar do projeto.</echo>
		<jar jarfile="${deploy}/HelloCliente.jar" basedir="${dist}">
			<manifest>
				<attribute name="Main-Class" value="EjbCliente"/>
			</manifest>
		</jar>
	</target>

<target name="all" depends="dist">
    <echo> Executa o projeto.</echo>
    <java jar="${deploy}/HelloCliente.jar" fork="true"/>
</target>
</project>

No cliente está assim:

try{
        		Properties config = new Properties();

        		config.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
        		config.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");
        		config.put(Context.PROVIDER_URL, "jnp://localhost:1099");

        		Context context = new InitialContext(config);
				
                Object objref = context.lookup("ejb.HelloWorldBean");
                HelloWorldHome home = (HelloWorldHome) PortableRemoteObject.narrow(objref, HelloWorldHome.class);
                HelloWorld remote = home.create();   
                
                String remoto = remote.hello();
                
                System.out.println(remoto);
                
				
				} catch(Exception e){
					e.printStackTrace();
				}

Desde já agradeço a ajuda!