EJB 3.0 e Aplicação Stand Alone...  XML
Índice dos Fóruns » Java Enterprise Edition (Java EE)
Autor Mensagem
kleins
JavaTeenager
[Avatar]

Membro desde: 19/03/2007 13:05:03
Mensagens: 171
Offline

Galera.

Estou tentando fazer umas coisas com EJB, começando a simular um ambiente distribuido, mas estou com um problema.

No NetBeans eu crio uma aplicação EJB e um client java-local....

No Netbeans funciona perfeitamente... hehehe mas quando tento simular um cliente qualquer (Fora da Aplicação EJB) náo consigo..

Eu entro no server (Glassfish) e baixo o ClientStub, adciono ao classPath da aplicação client nova e nada de conseguir chamar as classes...

Alguém pode me dar uma luz ?

O código é :


O problema está na linha


Ele não acha a referência quando eu tento chamar interface, mesmo mesmo baixando direto do Glassfish o Client Stubs.

Abração e valeu.




Rodrigo
[Yahoo!] [MSN] [ICQ]
kleins
JavaTeenager
[Avatar]

Membro desde: 19/03/2007 13:05:03
Mensagens: 171
Offline

kleins wrote:Galera.

Estou tentando fazer umas coisas com EJB, começando a simular um ambiente distribuido, mas estou com um problema.

No NetBeans eu crio uma aplicação EJB e um client java-local....

No Netbeans funciona perfeitamente... hehehe mas quando tento simular um cliente qualquer (Fora da Aplicação EJB) náo consigo..

Eu entro no server (Glassfish) e baixo o ClientStub, adciono ao classPath da aplicação client nova e nada de conseguir chamar as classes...



Bom... novidades.
Já consegui resolver o problema anterior.
Fiz o deploy no glassfish pela linha de comando e ele gerou o stub....

Agora o problema é que ao chamar o metodo que faz a conexão, ele está ne reclamando o seguinte.



Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: com/sun/logging/LogDomains
at com.sun.enterprise.util.ORBManager.<clinit>(ORBManager.java:93)
at com.sun.enterprise.naming.SerialInitContextFactory.<clinit>(SerialInitContextFactory.java:65)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
at com.sun.naming.internal.VersionHelper12.loadClass(VersionHelper12.java:46)
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:654)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:28
at javax.naming.InitialContext.init(InitialContext.java:223)
at javax.naming.InitialContext.<init>(InitialContext.java:197)
at d1.D1View.jButton1ActionPerformed(D1View.java:230)
at d1.D1View.access$800(D1View.java:27)
at d1.D1View$4.actionPerformed(D1View.java:127)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:231
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:603
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5803)
at java.awt.Container.processEvent(Container.java:205
at java.awt.Component.dispatchEventImpl(Component.java:4410)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
at java.awt.Container.dispatchEventImpl(Container.java:2102)
at java.awt.Window.dispatchEventImpl(Window.java:2429)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:16
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)




Pesquisando, descobri que tenho que ter no cliente o appserv-rt.jar
http://javacio.us/subscribers/classes/com/sun/logging/LogDomains

Mas mesmo assim náo adiantou..

Alguém tem uma dica ?

abs

Rodrigo
[Yahoo!] [MSN] [ICQ]
willCesar
JavaChild

Membro desde: 09/03/2010 20:04:52
Mensagens: 111
Offline

Caro kleins,

Como voce consegui resolver este problema, estou com o mesmo problema, e nao sei onde esta o erro, poderia me ajudar

This message was edited 1 time. Last update was at 09/12/2010 14:53:45


"O senhor é meu pastor e nada me faltará".

Está usando DefaultTableModel AINDA??? Pare já com isso!

http://www.guj.com.br/posts/list/15/199067.java#1001295
Creditos ao ViniGodoy
[MSN]
kleins
JavaTeenager
[Avatar]

Membro desde: 19/03/2007 13:05:03
Mensagens: 171
Offline


Olá amigo.
Na época como era só teste e acabei não Finalizando.

Abs

Rodrigo
[Yahoo!] [MSN] [ICQ]
willCesar
JavaChild

Membro desde: 09/03/2010 20:04:52
Mensagens: 111
Offline

Caro Kleins,

Obrigado, como o meu nao é so teste, vou continuar a procurar uma solucao.

Att,

"O senhor é meu pastor e nada me faltará".

Está usando DefaultTableModel AINDA??? Pare já com isso!

http://www.guj.com.br/posts/list/15/199067.java#1001295
Creditos ao ViniGodoy
[MSN]
kleins
JavaTeenager
[Avatar]

Membro desde: 19/03/2007 13:05:03
Mensagens: 171
Offline

Se puder postar aqui depois ia ser ótimo

Abs

Rodrigo
[Yahoo!] [MSN] [ICQ]
willCesar
JavaChild

Membro desde: 09/03/2010 20:04:52
Mensagens: 111
Offline

com certeza, quando achar a solucao posto sim

"O senhor é meu pastor e nada me faltará".

Está usando DefaultTableModel AINDA??? Pare já com isso!

http://www.guj.com.br/posts/list/15/199067.java#1001295
Creditos ao ViniGodoy
[MSN]
willCesar
JavaChild

Membro desde: 09/03/2010 20:04:52
Mensagens: 111
Offline

caro kleins,

Resolvi meu problema, coloquei a biblioteca gf-client-module.jar na classpath da aplicacao, e ao executar, deve-se utilizar appclient -client arquivo.jar e nao java -jar como estava fazendo

"O senhor é meu pastor e nada me faltará".

Está usando DefaultTableModel AINDA??? Pare já com isso!

http://www.guj.com.br/posts/list/15/199067.java#1001295
Creditos ao ViniGodoy
[MSN]
AGAraujo
JavaTeenager
[Avatar]

Membro desde: 30/03/2009 07:56:35
Mensagens: 159
Offline

Boa tarde!!!

Cara, EJB já não é molesa e vocês ainda complicam... rsrs Brincadeira. Todos estamos aqui para aprender.
Bom, por padrão as propriedades que você adicionou são as mesmas do default. Mas menos mau, pois ai aprende-se cada uma.

Sobre a execução existem algumas regras, sobre EJB.
1) Não é possível ter acesso a bens locais, de fora do container. Logo nenhuma aplicação standalone funcionará tentando recuperar objetos locais. Caso realmente deseje isto deve declarar como Remote, mesmo que esteja usando a mesma JVM;
2) Caso acesso dentro do container na mesma JVM basta utilizar o nome da classe chamando .class.getName();
3) Caso acesso de fora do container precisa utilizar JNDI, que possivelmente seja: "java:global/<nome da aplicação>/<nome do modulo>/<ref do bean>"

Assim é possível resolver a mesma busca que vcs fizeram sem utilizar appclient do glassfish, pois quando assim o fazem colocam a aplicação cliente dentro do container, funcionando como descrito no item 2.


Até a próxima.

O pensamento é uma prévia dos próximos acontecimentos
AGAraujo
JavaTeenager
[Avatar]

Membro desde: 30/03/2009 07:56:35
Mensagens: 159
Offline


Pesquisando, descobri que tenho que ter no cliente o appserv-rt.jar


Utilizando o Glassfish 2.x deve-se adicionar ao classpath do cliente os jar: appserv-rt.jar e javaee.jar
Utilizando o Glassfish.3.x deve-se adicionar ao classpath do cliente o jar: gf-client.jar


O pensamento é uma prévia dos próximos acontecimentos
willCesar
JavaChild

Membro desde: 09/03/2010 20:04:52
Mensagens: 111
Offline

Caro AGAraujo,

Não entendi muito bem a parte do item 3, por favor poderia explicar novamente, se possivel mostra um exemplo.

att,

"O senhor é meu pastor e nada me faltará".

Está usando DefaultTableModel AINDA??? Pare já com isso!

http://www.guj.com.br/posts/list/15/199067.java#1001295
Creditos ao ViniGodoy
[MSN]
Matheus.Araujo
Smalltalk

Membro desde: 04/03/2011 15:35:08
Mensagens: 2
Offline

Pessoal,

Quais são os jars necessários para o cliente stand alone funcionar?

Meu código é o seguinte:



Estou recebendo a exceção


Incluí os jars
  • appserv-rt.jar

  • javaee.jar

  • jndi-properties.jar

  • gf-client.jar


  • Já cheguei até a incluir todos os jars da pasta modules e essa exceção continua sendo lançada.

    Anteriormente, estava usando o construtor do InitialContext vazio da seguinte forma:





    mas era gerada a seguinte exceção:


    Matheus.Araujo
    Smalltalk

    Membro desde: 04/03/2011 15:35:08
    Mensagens: 2
    Offline

    Por favor, esqueçam a questão anterior.
    Realmente, basta apenas o arquivo gf-client.jar para que funcione.
    Meu problema era que eu tinha um projeto com um service locator e eu havia incluído o jar neste projeto, mas meu cliente estava em outro projeto e eu não havia incluído o gf-client.jar neste projeto. Quando fiz isso, funcionou!
    Barbeiragem minha!
    andrestrindade
    JavaTeenager
    [Avatar]

    Membro desde: 01/09/2008 14:06:23
    Mensagens: 150
    Offline

    O que é EJB? Estive procurando um tutorial sobre EJB 3.0, mas não encontro nenhum bom material.
    O que é EJB? Para que serve? Como usa-lo?!

    This message was edited 1 time. Last update was at 18/04/2011 08:17:10


    Quanto mais aprendo, percebo a vasta gama de conhecimentos que ainda não possuo.
    clebertx
    Smalltalk

    Membro desde: 05/02/2012 14:30:22
    Mensagens: 4
    Offline

    Boa tarde Galera, desculpe reviver o tópico, mas estou com exatamente o mesmo problema e não consigo resolver.

    Utilizo o Glassfish 3.1.1 e o Netbeans 7.1.

    O que ocorre é o seguinte:

    Fiz uma aplicação JavaFx de teste, a qual acessa um módulo EJB.

    1) No Netbeans, eu consigo executar a aplicação perfeitamente, necessitando apenas adicionar a biblioteca gf-client.jar OU a biblioteca appserv-rt.jar no projeto. Qualquer uma das duas funciona desde que eu deixe qualquer uma das bibliotecas citadas antes da biblioteca adicionada por padrão javaee-api-6.0.jar na ordem de bibliotecas do projeto Netbeans. (IMPORTANTE)

    2) Para que funcione, ainda no Netbeans, eu NEM sequer preciso indicar a propriedade:

    props.setProperty("java.naming.factory.initial", "com.sun.enterprise.naming.SerialInitContextFactory");

    Simplesmente, faço o seguinte: InitialContext ic = new InitialContext(); //Isso mesmo sem parâmetros.

    E na sequência eu faço o lookup do objeto remoto: EJBRemote p = (EJBRemote) ic.lookup("EJBRemote");

    E a aplicação funciona, PORÉM SOMENTE DENTRO NO NETBEANS.

    3) Já tentei de inúmeras formas executar essa aplicação fora do Netbeans:

    a) Já copiei as libs para o diretório /lib dentro do /dist do projeto;
    b) Já tentei executar pelo appclient -client nome_do_projeto.jar;
    c) Já tentei pelo Webstart;
    d) Já tentei adicionar todas as libs do Glassfish no projeto do netbeans;
    e) Já tentei também usando a propriedade props.setProperty("java.naming.factory.initial", "com.sun.enterprise.naming.SerialInitContextFactory");

    4) Considerando que a ideia é executar a aplicação em uma máquina remota, ou seja NÃO é a máquina onde o netbeans ou glassfish está instalado, pergunto: Qual é a maneira correta de instalar a aplicação nessa máquina remota para que acesse corretamente os métodos do módulo EJB? (por favor, somente responda se tiver certeza do que está falando)

    5) Vi que há dentro do diretório bin do glassfish um package-appclient.bat que gera um arquivo appclient.jar no diretório lib do glassfish. Há alguma relação com isso?

    6) As mensagens quando eu executo fora do netbeans variam. Exemplo:

    Se eu uso a propriedade props.setProperty("java.naming.factory.initial", "com.sun.enterprise.naming.SerialInitContextFactory"), ele diz que não encontra a classe com.sun.enterprise.naming.SerialInitContextFactory (ClassNotFoundException)

    Se eu tiro essa propriedade, o sistema diz que eu preciso informar tal propriedade, porém quando eu executo no Netbeans, eu NEM preciso informar que ele funciona.
    Achei em um fórum que a partir do Glassfish 3.1 não seria preciso informar a propriedade.

    Nas minhas pesquisas, vi que muita gente tem ou teve o mesmo problema, porém não vi nenhuma que resolvesse esse problema.

    Quem puder ajudar, agradeço.

    Abraço.

     
    Índice dos Fóruns » Java Enterprise Edition (Java EE)
    Ir para:   
    Powered by JForum 2.1.8 © JForum Team