Сессионный компонент JBoss, загружающий данные в приложение war - PullRequest
0 голосов
/ 22 марта 2012

У меня есть сессионный компонент, который развернут в файле ear, контролируемом кем-то другим. Я предоставляю веб-приложение в форме файла войны или файла уха. Мне нужно предоставить возможность этому сессионному компоненту, чтобы он мог передавать данные объекту, который находится внутри моего файла военных действий. Я думал о предоставлении файла ear с внутренним файлом war для веб-частей и файлом sar для предоставления mbean, на которое можно ссылаться из файла ear, которым управляет другой человек. Я создал mbeans раньше, но на этот раз данные обрабатываются не mbean, а объектом (доступ синглтоном?) Внутри приложения war. По сути, приложение war должно иметь свободный доступ к тому объекту, который содержит данные.

Как мне устранить разрыв между сессионным компонентом и объектом в приложении war?

1 Ответ

0 голосов
/ 22 марта 2012

Любой EJB по умолчанию привязан к JNDI. Вы можете легко использовать JNDI, чтобы найти сессионный компонент внутри вашего сервлета и выполнить сессионный компонент. Вам действительно не нужно иметь MBeans.

Вот псевдокод (просто псевдо, может не скомпилироваться)

Образец бобов с сохранением состояния

package org.jboss.example;
import javax.ejb.Stateful;

@Stateful
public class StatefulBean {

 private String state;

 public String getState() {
     return state;
 }

 public void setState(String state) {
     this.state = state;
 }
}

Пример сервлета, обращающегося к вышеуказанному компоненту

package org.jboss.example;
import java.io.IOException;
import java.io.PrintWriter;

import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class BeanServlet extends HttpServlet {

 @Override
 protected void doPost(HttpServletRequest request, HttpServletResponse response)
         throws ServletException, IOException {
     PrintWriter writer = response.getWriter();
     StatefulBean statefulBean = getStatefulBean(request);
     writer.println("State: " + statefulBean.getState());
 }

 private StatefulTestBean getStatefulBean(HttpServletRequest request)
         throws ServletException {

     StatefulBean sb = null;
     try {
         InitialContext ic = new InitialContext();
         sb = (StatefulBean) ic.lookup("java:ejb/StatefulBean");

         } catch (NamingException e) {
             throw new ServletException(e);
         }
     }
     return sb;
 }
}
...