我已经将EJB与servlet一起使用很多年了,但是我需要在JSP页面中使用它们,而且我正在努力。我正在使用玻璃鱼 4.1
我有一个这样的实体:
public class Address implements Serializable, EntityToJson {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name="addressType")
@Enumerated(EnumType.ORDINAL)
private AddressType addressType;
@Column(name="streetLineOne")
private String streetLineOne;
@Column(name="city")
private String city;
@Column(name="adState")
private String state;
...
界面如下:
public interface AddressService {
public Address createAddress(final JsonObject addressPayload) throws AddressException;
...
}
所以在我的 Servlet 中,我会做这样的事情:
@EJB AddressService addressService;
并像这样使用它
Address address = addressService.createAddress(addressJson);
如何在 JSP 中执行此操作?我尝试的一切似乎都不起作用。
从设计的角度来看,这是个坏主意,但无论如何你可以通过在jndi中锁定来获得它。
喜欢:
AddressService addressService = (AddressService) new InitialContext().lookup("java:comp/env/AddressService");
你可以通过servlet: https://github.com/readonlynetwork/sandbox/tree/master/jsp-and-ejb
request.setAttribute("ejbObj", ejbObj);
request.getRequestDispatcher("/page.jsp").forward(request, response);