Problemas com EJB no Oracle Weblogic 10.3

7 respostas
danieldestro

Galera,

Fazendo deployment e testes de EJB 3.0 no Oracle Weblogic Server 10.3 (10g R3) encontrei o seguinte problema.

Ao fazer lookup remoto do EJB, recebi a seguinte exception:

Exception in thread "main" java.lang.NullPointerException
at weblogic.ejb.container.internal.RemoteBusinessIntfProxy.getTargetMethod(RemoteBusinessIntfProxy.java:162)
at weblogic.ejb.container.internal.RemoteBusinessIntfProxy.invoke(RemoteBusinessIntfProxy.java:53)
at $Proxy0.whoIsYourDaddy(Unknown Source)
at java.lang.String.valueOf(Unknown Source)
at java.io.PrintStream.println(Unknown Source)
at my.MyDudeTest.test(MyDudeTest.java:10)

O problema é devido ao fato do meu EJB, e sua interface, fazer uso de Generics.

package my;
import java.util.*;
public interface MyDude {
  List<Dude> whoIsYourDaddy();
}
package my;
import java.util.*;
import java.ejb.*;

@Stateless
@Remote({MyDude.class})
public class MyDudeBean implements MyDude {
  public List<Dude> whoIsYourDaddy() {
    List<dude> myMen = new ArrayList<Dude>();
    myMen.add( new Dude("Ronaldo") );
    return myMen;
  }
}

Acho que sou o campeão mundial de encontrar problemas bizarros com containers JEE. Affffff

7 Respostas

danieldestro

Uma das soluções é simplesmente “tirar” os Generics.

Outra solução é segregar em outra interface com Generics, assim:

public interface MyDude&lt;T&gt; { List&lt;T&gt; whoIsYourDaddy(); }

public interface MyDudeI extends MyDude&lt;Dude&gt; { }

public class MyDudeBean extends MyDudeI { public List&lt;T&gt; whoIsYourDaddy() { ... } }

É um bug conhecido. Ridículo!!!

Mais informações: http://forums.oracle.com/forums/thread.jspa?messageID=3235508&tstart=0

leo.luz

Ola Daniel,

Fique tranquilo que você não é o único. Estamos com o mesmo problema por aqui!

Abrimos chamado no metalink em 18/08 e até agora a única coisa que conseguimos foi um “guia” de como implementar EJBs remotos que façam uso de generics.

Por acaso você sabe se esse problema foi corrigido no 11gR1? Procurei rapidamente na net mas não achei nada a respeito.

Abraço!
-LeoLuz-

danieldestro

Cara, nem vi nada sobre o 11g.

O pessoal do Metalink da Oracle me mandou um ZIP com um projeto que, segundo eles, é o modo como se implementa Generics no EJB 3 no Weblogic 10g R3. Eu, sinceramente, ainda nem abri o projeto. Mas se for baseado na “solução” de outro problema que tive, certamente será decepcionante. Se quiser mando por e-mail (PVT-me).

leo.luz

Ah! tranquilo…
Eles tb mandaram esse .zip para nós.
Nem abre q vc vai se decepcionar… :confused:

Assim que tiver novidades do chamado eu posto aqui.

Abracos,
-LeoLuz-

danieldestro

O indiano me mandou um ZIP que, aparentemente, é igual ao Test Case que eu fiz e tinha dado erro, porém funcionou.
Perguntei a ele se mudou algo, mas não respondeu ainda.

leo.luz

Desculpe não ter respondido antes mas nosso usuário do metalink estava com problema e não conseguimos acompanhar mais o nosso chamado.
Nós evoluímos a resolução da seguinte forma:

Esse problema não ocorre mais com a versão 11g do Weblogic. Nossa escolha foi atualizar para essa versão.

Para quem tem que continuar na versão 10R3 do WLS a Oracle liberou um patch que supostamente resolve o problema. Não testamos essa solução.
Segue a resposta da Oracle do chamado do Metalink:

The engineering team has provided the patch for the generics issue with the WLS 10.3.

I have tested the same at my end and the initial tests seem to be positive.

Please find the details below to download the same using the smart update utility.

WLS Server :- 10.3
Patch Id:- RBW6
Passcode:- ANJHKZG4

I have uploaded the patch to FTP site, please click on the below link to download the same.

ftp://[email removido]/support/outgoing/Generics-Patch/

Following are the step to apply the patch using Smart update: -

  1. Run the Smart Update. (Run bsu.sh present in the bea10.3/utils/bsu/bsu.sh)
  2. Enter your Support ID and Password. (Support ID/Password)
  3. You have to Click Patches Menu —> Retrieve Private.
  4. You will be Prompted for Patch Identifier which is…(Patch ID : RBW6)
  5. Next, you will be Prompted for Passcode (passcode : ANJHKZG4)
  6. Click the first option .i.e. yes, check for conflicts now.

Please refer the below link for further details:-

http://download-llnw.oracle.com/docs/cd/E15051_01/common/smartupdate/guide/quickrefax.html

Steps to apply the patch manually:-

1:- Unzip the RBW6.jar file provided.
2:- Under the jar file you will find a jars folder.
3:- The jars folder contains the BUG8927353_1030.jar
4:- Set the Classpath variable under setDomainEnv.cmd under Domain_Home/bin directory and make sure that the patch location is placed at the first place.

Ex:- set CLASSPATH=C:\ jars\ BUG8927353_1030.jar;%PRE_CLASSPATH%;%WEBLOGIC_CLASSPATH%;%POST_CLASSPATH%;%WLP_POST_CLASSPATH%

6:- After setting the classpath re-start the server.
7:- Verify that the patch has been successfully applied from the server log file.

Espero que seja útil para alguém.

Abraço!
-LeoLuz-

danieldestro

É. eu abri um chamado na Oracle meses atrás e eles trabalharam nisso e me mandaram o patch. Acabei nem testando.

Criado 1 de julho de 2009
Ultima resposta 26 de nov. de 2009
Respostas 7
Participantes 2