发送GET到servlet时javax.naming.NameNotFoundException

时间:2018-11-03 17:00:09

标签: java-ee ejb jndi wildfly-10

我要经历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问题?

0 个答案:

没有答案