我要经历this tutorial showing an example of a Stateful EJB。我创建的项目结构与本教程中显示的完全相同,但是我使用的是Hibernate,而不是JPA,所以在StatefulSessionBeansEJB-> ejbModule-> META-INF中没有persitence.xml,但是在Hibernate.cfg.xml中ejbModule。我使用的是Wildfly 10,而不是Glassfish。另外,在获得命名异常之后,我向ejb-jar.xml添加了一些代码,现在看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/ejb-jar_3_2.xsd" version="3.2">
<display-name>StatefulSessionBeansEJB </display-name>
<enterprise-beans>
<session>
<ejb-name>CartBean</ejb-name>
<business-local>com.jcg.enterprise.ejb.Cart</business-local>
<ejb-class>com.jcg.enterprise.ejb.CartBean</ejb-class>
<session-type>Stateful</session-type>
<transaction-type>Container</transaction-type>
</session>
</enterprise-beans>
<ejb-client-jar>StatefulSessionBeansEJBClient.jar</ejb-client-jar>
</ejb-jar>
在教程的最后,有一个用于将产品添加到购物车的URL:
http://localhost:8080/StatefulSessionBeansTest/ShoppingCartServlet?product=ram
当我使用它时-我得到了命名异常,它引用了servlet中使用JNDI来获取资源的代码:
cartBean = (Cart) ic.lookup("java:global/StatefulEjbEAR/StatefulSessionBeansEJB/CartBean!"
+ "com.jcg.enterprise.ejb.Cart");
我不明白这里出了什么问题。有人可以节省我阅读JNDI的时间吗?还是Wildfly问题?