相关疑难解决方法(0)

如何在Tomcat上安装和使用CDI?

我正在创建我的第一个项目Java EE 7,但我遇到了麻烦.感谢任何帮助.

  • Tomcat 7.0.34
  • JSF 2.2
  • Primefaces 3.5
  • JavaEE的-API-7.0.jar

应用程序启动时,Tomcat日志显示以下消息:

"validateJarFile (C:\...\build\web\WEB-INF\lib\javaee-api-7.0.jar)-jar not loaded. See Servlet 2.3 Spec, section 9.7.2. Offending class: javax/servlet/Servlet .class"
Run Code Online (Sandbox Code Playgroud)

当我点击调用托管bean的按钮时,我收到错误:

Advertência: /index.xhtml @18,66 value="#{indexMB.user}": Target Unreachable, identifier 'indexMB' resolved to null
javax.el.PropertyNotFoundException: /index.xhtml @18,66 value="#{indexMB.user}": Target Unreachable, identifier 'indexMB' resolved to null
Run Code Online (Sandbox Code Playgroud)

IndexMB

@Named("indexMB")
@RequestScoped
public class IndexMB {

private String password;
private String user;

public String loginTest(){
    return (this.user.equals("admin") ? "adminPage" : "inOutPage");
}

// getters and setters
}
Run Code Online (Sandbox Code Playgroud)

的index.xhtml

<html ...>

<f:loadBundle …
Run Code Online (Sandbox Code Playgroud)

jsf tomcat cdi jsf-2.2

30
推荐指数
1
解决办法
3万
查看次数

在tomcat中使用生产者注入EntityManager

我在tomcat 7上使用Hibernate和Weld CDI运行一个项目.我已经编写了一个ServletContextListener来在应用程序启动期间创建EntityManagerFactory和EntityManager.

public class PersistenceListener implements ServletContextListener {

     private static EntityManagerFactory entityManagerFactory;

     public void contextInitialized(ServletContextEvent sce){
     ServletContext context = sce.getServletContext();
     entityManagerFactory = Persistence.createEntityManagerFactory("hibernate-test");
     }

     public void contextDestroyed(ServletContextEvent sce) {
     entityManagerFactory.close();
     }


     public static EntityManager createEntityManager() {
            if (entityManagerFactory == null) {
                throw new IllegalStateException("Context is not initialized yet.");
            }

            return entityManagerFactory.createEntityManager();
        }

}
Run Code Online (Sandbox Code Playgroud)

我可以通过以下代码创建它,在我的测试类(它是一个arquillian测试类)中使用我的entityManager

EntityManager em = PersistenceListener.createEntityManager();
               em.getTransaction().begin();
                   em.createQuery("delete from Game").executeUpdate();
                   em.getTransaction().commit();
Run Code Online (Sandbox Code Playgroud)

这是我的测试类的完整代码

    @RunWith(Arquillian.class)
    public class HibernateTestSample {

           @Deployment
           public static WebArchive createTestArchive()
           {
               MavenDependencyResolver resolver = DependencyResolvers.use( …
Run Code Online (Sandbox Code Playgroud)

tomcat hibernate cdi jboss-weld jboss-arquillian

5
推荐指数
1
解决办法
6440
查看次数

标签 统计

cdi ×2

tomcat ×2

hibernate ×1

jboss-arquillian ×1

jboss-weld ×1

jsf ×1

jsf-2.2 ×1