Я изучаю EJB и написал пример программы, используя GlassFish 4, но по какой-то причине он не работает.Simple Singleton EJB Пример
index.jsp:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ page import="javax.ejb.EJB" %>
<%@ page import="ejbtest.utility.Utility" %>
<%@ page import="ejbtest.action.*" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>EJB Test</title>
</head>
<body>
<%
try {
Utility utility = new Utility();
out.println("count: " + utility.getCount() + "<br/><br/>");
Trigger1 trigger1 = new Trigger1();
out.println("trigger1 count: " + trigger1.getTriggerCount());
} catch (NullPointerException npe) {
out.println("Nullpointer caught");
}
%>
</body>
</html>
Utility.java:
package ejbtest.utility;
import javax.ejb.Singleton;
import javax.ejb.Startup;
@Startup
@Singleton
public class Utility {
int count;
public Utility() throws NullPointerException {
count = 0;
count++;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
}
Trigger1.java:
package ejbtest.action;
import ejbtest.utility.Utility;
import javax.faces.bean.ApplicationScoped;
import javax.inject.Inject;
@ApplicationScoped
public class Trigger1 {
@Inject
Utility utility;
public Integer getTriggerCount() {
return utility.getCount();
}
}
Нежелательная Выход:
Количество: 1
NullPointer пойманы
Я попробовал его в Tomcat 7 и GlassFish 4 как скриптовый сценарий JSP вместо основного класса, но у меня получилось то же самое. .. – ThreaT
Показать код сценария. Если вы сделали это так же, как здесь, новый Trigger1(), значит, это неправильно.Объект, созданный вами, создает внешний контейнер EJB, а аннотации EJB игнорируются. Ваш объект Trigger1 должен быть создан контейнером EJB. – Fireworks
Код обновлен, все еще получая исключение NullPointerException через JSP – ThreaT