2016-06-01 2 views
0

Я получаю исключение ClassCastException при вызове EJB в Pojo над JNDI. Я использую Oracle Weblogic Server 10.3.6 (EJB 3.0).ClassCastException во время вызова EJB над JNDI

Моя структура:

  • app.ear
    • Lib
      • Interfaces.jar
        • MyBeanInterface.java
    • ejb.jar
      • MyBeanImpl.java
    • webapp.war
      • Client.java
      • WEB-INF
        • web.xml

Мой местный интерфейс:

package mypackage; 

@Local 
public Interface MyBeanInterface {} 

Мой EJB-класс:

package mypackage; 

@Stateless(name = "MyBean") 
public class MyBeanImpl implements MyBeanInterface {} 

Мой клиент (не EJB):

MyBeanInterface bean = (MyBeanInterface) new InitialContext().lookup("java:comp/env/ejb/MyBean"); 

Мой web.xml

<ejb-local-ref> 
    <ejb-ref-name>ejb/MyBean</ejb-ref-name> 
    <ejb-ref-type>Session</ejb-ref-type> 
    <local>mypackage.MyBeanInterface</local> 
</ejb-local-ref> 

Мой Исключение:

Сам Lookup работает. Я получаю ссылку. Но когда я хочу бросить с (MyBeanInterface) Я получаю следующее сообщение об ошибке:

не может бросить экземпляр «класса mypackage.MyBeanInterface_whjkp6_MyBeanImpl (загружается экземпляр weblogic.utils.classloaders.GenericClassLoader (ID = 28136))» в экземпляр «интерфейса mypackage.MyBeanInterface (загружается экземпляр weblogic.utils.classloaders.GenericClassLoader (ID = 28144))

Что я могу сделать?

ответ

0

кажется, классы загружаются различными загрузчиков классов.Возможные варианты:

1) Убедитесь, что классы загружаются же загрузчик классов

2) Использование отражения

3) сериализации, а затем десериализации

См:

1) cast across classloader?

2) https://community.oracle.com/thread/757133

3) ClassCastException because of classloaders?

Смежные вопросы