Как вызвать сессионный компонент из jsp - PullRequest
4 голосов
/ 11 мая 2010

Я новичок в ejb. На самом деле я создал один ejb и добавил ссылку на веб-приложение, которое будет просто вызывать сессионный компонент. Как вызвать сессионный компонент из файла jsp?

Ответы [ 6 ]

4 голосов
/ 12 мая 2010

Я также мог бы предпочесть, чтобы вы использовали модель MVC для вашего приложения. В этом случае нет необходимости вызывать сессионный компонент из jsp, вы можете вызвать его из самого сервлета.

Проверьте эту ссылку, чтобы вызвать EJB из сервлета. Нажмите

2 голосов
/ 19 ноября 2014

Я пытался сделать это на Wildfly, но безуспешно, используя аннотацию @EJB, вероятно, у JSP нет CDI. Так что я реализовал это по-другому (не так ярко):

До:

<%
    LoginAction loginAction;

    try {
        Properties properties = new Properties();
        properties.put("jboss.naming.client.ejb.context", true);
        properties.put(Context.URL_PKG_PREFIXES,"org.jboss.ejb.client.naming");
        Context ctx=new InitialContext(properties);
        loginAction = (LoginAction) ctx.lookup("java:module/LoginAction");

        session.setAttribute("loginAction", loginAction); //this is to be able to use loginAction on EL Expressions!
    } catch (Exception e) {
        e.printStackTrace();
    }
%>

А все остальное остается прежним!

0 голосов
/ 19 мая 2016

Вы можете смешивать и сочетать для поддержки нескольких серверов приложений наилучшим образом. В приведенном ниже коде используется инъекция @EJB для WebSphere Liberty и InitialContext для JBoss Wildfly

<%!

@EJB
GitlabHelper gitAPI;

public void jspInit() {

    if (gitAPI == null) {

    try {
        gitAPI = (GitlabHelper) new InitialContext().lookup("java:module/GitlabHelper");
        System.out.println("<!-- initContext has been used -->");
    } catch (Exception e) {
        e.printStackTrace();
    }
    }
}

%>
0 голосов
/ 20 апреля 2015

Simple..Override метод Jsp jspInit и создание объекта InitialContext. Объект InitialContext может получить доступ ко всем ресурсам, которым назначено имя JNDI ..

<%!

BeanIntefaceName instanceName;

%>   

<%
public void jspInit()
{
    instanceName = (BeanIntefaceName)new InitialContext().lookup("java:global/[application_name]/[module_name]/[enterprise_bean_name]/[inteface_name]");
}

instanceName.yourMethodName();
%>
0 голосов
/ 28 января 2014

Поскольку вы используете EJB на сервисном уровне и в MVC, я никогда не советую вызывать сессионный компонент из вашего представления или jsp. Вы можете вызывать метод сессионных компонентов путем внедрения ссылки EJB с использованием аннотации @EJB.

0 голосов
/ 11 мая 2010

1) первым способом будет создание прямого объекта

используйте тег импорта для импорта вашего класса

< % @ page import = packageName.Classname %>
    <%
    @EJB
    Classname object = new Classname();
    %>

, а затем получить доступ к методам, используя обычный jsp

<%=object.callmethod()%>

2) другим способом будет использование стандартных действий

<jsp:useBean id="beanId' class="packagename.ClassName" />
<jsp:getStudentInfo name="beanId" property="name"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...