JUG-MS - Conexão de um Cliente Java Standalone com o Glassfish

145 views
Skip to first unread message

Wagner dos S. Rodrigues

unread,
Nov 30, 2010, 7:41:21 AM11/30/10
to jug...@googlegroups.com
Olá, pessoal...

Preciso conectar a minha aplicação ao Glassfish e estou configurando meu Context da seguinte forma no cliente:

Properties props = new Properties();
props.put(javax.naming.Context.INITIAL_CONTEXT_FACTORY, "com.sun.enterprise.naming.SerialInitContextFactory");
props.put(javax.naming.Context.URL_PKG_PREFIXES, "com.sun.enterprise.naming");
props.put(javax.naming.Context.STATE_FACTORIES, "com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl");
props.put(javax.naming.Context.PROVIDER_URL, "iiop://192.168.10.2:3700");

GestaoDeAgendamentosRemote gar = (GestaoDeAgendamentosRemote) new InitialContext(props).lookup("ejb/agenda/GestaoDeAgendamentos");

Quando eu mando executar ocorre a seguinte exceção:
javax.naming.CommunicationException: Can't find SerialContextProvider [Root exception is java.lang.ClassCastException]
at com.sun.enterprise.naming.SerialContext.getProvider...
...
...

As três primeiras propriedades (javax.naming.Context.INITIAL_CONTEXT_FACTORY, javax.naming.Context.URL_PKG_PREFIXES, javax.naming.Context.STATE_FACTORIES) eu copiei do jndi.properties do appserv-rt.jar.

Eu desenvolvo utilizando o Netbeans 6.9 com o Glassfish 3. Dentro da IDE é tudo uma maravilha, já que o servidor EJB está embutido, porém, quando dou o deploy na aplicação e pego o .jar
para executar fora do Netbeans é que a coisa não funciona.
Outra coisa muito importante pra mim é se esta configuração que demostrei no código acima (quando estiver funcionando) poderá ser colocada em um arquivo de configuração (jndi.properties)
para que eu possa usar o construtor padrão do InitialContext.

Bom, pessoal, este é meu primeiro post de desenvolvimento e espero ter colocado as informações necessárias para que me ajudem.

Edilmar Alves

unread,
Nov 30, 2010, 9:22:14 AM11/30/10
to jug...@googlegroups.com
Voce quer fazer uma aplicacao desktop acessar um webservice, é isso?
Se sim, o NetBeans tem recursos faceis para voce criar o webservice, publicar o WSDL no GlassFish e depois criar um novo projeto desktop que vai gerar o codigo cliente a partir do WSDL.

Se for por ai mesmo, veja o exemplo CalculatorWS (webservice, cliente desktop e cliente servlet) que tem no javaeetutorial6.zip, do site do Java.
--
Você está recebendo esta mensagem porque se inscreveu no grupo "JUG-MS" dos Grupos do Google.
Para postar neste grupo, envie um e-mail para jug...@googlegroups.com.
Para cancelar a inscrição nesse grupo, envie um e-mail para jug-ms+un...@googlegroups.com.
Para obter mais opções, visite esse grupo em http://groups.google.com/group/jug-ms?hl=pt-BR.


--

Atenciosamente,
Edilmar Alves - Diretor Técnico

(67)3327-3001/3327-3093
http://www.intersite.com.br/
edilma...@intersite.com.br
edil...@intersite.com.br
edilmar
edil...@gmail.com
logoEmail.jpg
telefone.jpg
site.jpg
email.jpg
msn.jpg
skype.jpg
googletalk.jpg

Edilmar Alves

unread,
Nov 30, 2010, 9:27:03 AM11/30/10
to jug...@googlegroups.com
Tem tambem este link do NetBeans: http://netbeans.org/kb/trails/web.html
site.jpg
email.jpg
msn.jpg
skype.jpg
googletalk.jpg
logoEmail.jpg
telefone.jpg

Wagner dos S. Rodrigues

unread,
Nov 30, 2010, 9:36:26 AM11/30/10
to jug...@googlegroups.com
Olá, Edilmar... Obrigado pela atenção...

Então, cara, eu estou tentando realizar um conexão via IIOP (ORB), para trabalhar com RMI. O problema é que eu estava desenvolvendo na IDE e tudo funcionava corretamente, porque o EJB está embutido. Então, quando fui executá-lo fora do Netbeans é que a encrenca apareceu.
Resumindo, preciso saber qual a configuração correta do Context para que eu possa trabalhar via RMI (Standalone).
msn.jpg
skype.jpg
logoEmail.jpg
email.jpg
site.jpg
googletalk.jpg
telefone.jpg

Gilliard Cordeiro

unread,
Nov 30, 2010, 10:27:51 AM11/30/10
to jug...@googlegroups.com
Pelo que entendi nao é WS e sim EJB, correto?
Procura algo como gf-client.jar em alguma pasta do glassfish e coloque no teu classpath da aplicação cliente

2010/11/30 Wagner dos S. Rodrigues <wsrodrigues.ms@gmail.com>



--
Gilliard Cordeiro
http://gilliard.eti.br
skype.jpg
msn.jpg
email.jpg
logoEmail.jpg
site.jpg
googletalk.jpg
telefone.jpg

Wagner dos S. Rodrigues

unread,
Nov 30, 2010, 11:12:55 AM11/30/10
to jug...@googlegroups.com
eae, pessoal... agradeço a ajuda até agora...

Já consegui alguns avanços: fiz uma correção no PROVIDER_URL substituindo o IP pelo nome de domínio do computador, mas agora estou com a seguinte exceção:
30/11/2010 12:53:32 com.sun.corba.ee.impl.transport.SocketOrChannelConnectionImp
l <init>
AVISO: "IOP00410201: (COMM_FAILURE) Connection failure: socketType: IIOP_CLEAR_T
EXT; hostname: localhost; port: 3700"

org.omg.CORBA.COMM_FAILURE:   vmcid: SUN  minor code: 201  completed: No
        at com.sun.corba.ee.impl.logging.ORBUtilSystemException.connectFailure(O
RBUtilSystemException.java:2690)
        at com.sun.corba.ee.impl.logging.ORBUtilSystemException.connectFailure(O
RBUtilSystemException.java:2711)
        at com.sun.corba.ee.impl.transport.SocketOrChannelConnectionImpl.<init>(
SocketOrChannelConnectionImpl.java:261)
        at com.sun.corba.ee.impl.transport.SocketOrChannelConnectionImpl.<init>(
SocketOrChannelConnectionImpl.java:274)
...
...
Caused by: java.lang.RuntimeException: java.net.ConnectException: Connection ref
used: connect

        at com.sun.enterprise.iiop.IIOPSSLSocketFactory.createSocket(IIOPSSLSock
etFactory.java:347)
        at com.sun.corba.ee.impl.transport.SocketOrChannelConnectionImpl.<init>(
SocketOrChannelConnectionImpl.java:244)
        ... 48 more

Acredito que isto seja um progresso se comparado ao primeiro post...
skype.jpg
email.jpg
googletalk.jpg
logoEmail.jpg
telefone.jpg
msn.jpg
site.jpg

Maicon Pasqualeto

unread,
Nov 30, 2010, 11:26:28 AM11/30/10
to jug...@googlegroups.com
Olá Wagner,
Vou passar alguns passos para configuração para standalone client para Glassfish v3.1

* Primeiramente, coloque esses jars no seu diretório 'lib' da aplicação, eles estão nas pastas: 
glassfish/lib
glassfish/modules

auto-depends.jar
common-util.jar
config-api.jar
config-api-l10n.jar
config.jar
config-types.jar
deployment-common.jar
dol.jar
ejb-container.jar
ejb-internal-api.jar
ejb.security.jar
gf-client.jar
gf-client-module.jar
gf-connectors-connector.jar
gf-ejb-connector.jar
glassfish-api.jar
glassfish-corba-asm.jar
glassfish-corba-codegen.jar
glassfish-corba-csiv2-idl.jar
glassfish-corba-newtimer.jar
glassfish-corba-omgapi.jar
glassfish-corba-orbgeneric.jar
glassfish-corba-orb.jar
glassfish-ee-api.jar
glassfish.jar
glassfish-mbeanserver.jar
glassfish-naming.jar
gmbal.jar
hk2-core.jar
hk2.jar
internal-api.jar
javaee-kernel.jar
javax.ejb.jar
javax.resource.jar
javax.transaction.jar
jta.jar
kernel.jar
kernel-l10n.jar
management-api.jar
orb-connector.jar
orb-enabler.jar
orb-iiop.jar
security.jar
tiger-types-osgi.jar
transaction-internal-api.jar

* remova a propriedade: 
props.put(javax.naming.Context.PROVIDER_URL, "iiop://192.168.10.2:3700");

* coloque essas duas:
env.setProperty("org.omg.CORBA.ORBInitialHost", "192.168.10.2");
env.setProperty("org.omg.CORBA.ORBInitialPort", "3700");

E o último passo é alterar, dentro do painel de controle do Glassfish, o ip binding que está 0.0.0.0 para o ip do seu servidor, no caso 192.168.10.2. 

Espero ter ajudado. 

Abraço

Maicon Pasqualeto
logoEmail.jpg
googletalk.jpg
site.jpg
msn.jpg
skype.jpg
email.jpg
telefone.jpg

Wagner dos S. Rodrigues

unread,
Nov 30, 2010, 1:30:25 PM11/30/10
to jug...@googlegroups.com
Graaaaaaannnnde, Maicon... não fiz exatamente o que vc me indicou, mas o teu post me ajudou de forma gigantesca...!

Na verdade eu juntei o teu post que falava sobre o jars e a configuração do Context com o conhecimento que adquiri estudando o gf-client.jar. A solução, no meu caso, ficou da seguinte forma:
- O gf-client.jar tem um arquivo manifest.mf. Nele existe um classpath apontando todos os jars utilizados por um cliente standalone. Daí eu percebi que a maioria dos jars vinham do diretório (C:\...\glassfish-3.0.1\glassfish\modules), inclusive os jars do ORB/IIOP. Sendo assim, a forma mais prática foi copiar a pasta modules para o diretório da aplicação cliente. Com o tempo irei verificar os jars não utilizados e remove-los.
- A configuração do Context ficou da forma que vc mensinou:

env.setProperty("org.omg.CORBA.ORBInitialHost", "192.168.10.2");
env.setProperty("org.omg.CORBA.ORBInitialPort", "3700");
eu já estava utilizando o Context desta forma, porém, sem a adição dos jars requisitados pelo gf-client.jar estava retornando uma java.net.ConnectException: Connection refused.

Agora tudo está fazendo sentido... hehehe!

Obrigado a todos que se dispuseram a ajudar. Foi muito importante.

Espero poder contribuir com vcs também!
site.jpg
skype.jpg
logoEmail.jpg
telefone.jpg
email.jpg
googletalk.jpg
msn.jpg

Maicon Pasqualeto

unread,
Dec 1, 2010, 5:21:00 PM12/1/10
to jug...@googlegroups.com
Olá Wagner, é exatamente isso. 
A lista dos jars que te passei já está filtrada, ou seja, é a lista mínima (que eu consegui filtrar) para que seu cliente não fique com tamanho muito grande. 
Precisando só postar
Abraço

Maicon Pasqualeto
email.jpg
skype.jpg
site.jpg
msn.jpg
logoEmail.jpg
googletalk.jpg
telefone.jpg
Reply all
Reply to author
Forward
0 new messages