Доступ к сессионному компоненту с сохранением состояния из сервлета / jsp вызывает исключение ClassCast в jboss 4.2.2 - PullRequest
0 голосов
/ 17 сентября 2009

Всякий раз, когда я пытаюсь получить доступ к EJB 3 Stateful session bean, развернутому на сервере приложений JBoss 4.2.2 с помощью веб-клиента (на сервере JBoss), такого как servlet / jsp, я получаю следующее исключение java.lang.ClassCastException: $ Proxy123 Если я использую приложение-клиент, тот же код работает без каких-либо исключений. Или, если я изменю bean-компонент на @Stateless, даже веб-клиент работает нормально Если я разверну свой .war на контейнере Tomcat внешне, веб-клиент снова будет работать и для bean-компонентов с состоянием.

Вкратце: EJB 3 с состоянием EJB 3, развернутый на JBoss 4.2 и доступный через веб-клиент, развернутый на JBoss, вызывает classcastexception

Это мой код на стороне клиента, написанный в сервлете

Properties properties = new Properties (); properties.put (Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory"); properties.put (Context.PROVIDER_URL, "jnp: // localhost: 1099");

        Context c = new InitialContext(properties);
        InvokePOJORemote ref = (InvokePOJORemote) c.lookup("InvokePOJOBean/remote");
        out.println("<h1>Servlet ejb ref " + ref + "</h1>");
        boolean sts = ref.addEmployee("Mad", (short) 30, new java.math.BigDecimal(12000));

Это создает исключение ClasscastException в операторе поиска во время приведения. Не знаю, что не так! Просьба помочь.

1 Ответ

1 голос
/ 26 сентября 2009

Это немного отвратительно, но вам нужно держать интерфейс ejb с сохранением состояния вне файла war. Он не находится ни в папке классов (из WEB-INF) как файл .class, ни в папке lib (из WEB-INF) как .jar файл.

Вместо этого вы можете создать файл jar с интерфейсом ejb с отслеживанием состояния и для компиляции сервлета добавить проект jar в ur .. скажем, используя «добавить внешние jar» в Eclipse.

Это должно работать ..

...