部署到Glassfish 4时,查找失败了'java:comp / BeanManager'

时间:2014-01-22 16:47:11

标签: eclipse glassfish eclipselink jsf-2.2 java-ee-7

我已经对Google和SO做了一些研究,但找不到解决方案。

我正在编写一个java ee 7 Web应用程序,包括使用Eclipse的Omnifaces和Primefaces。将应用程序部署到Glassfish 4时,出现以下错误:

javax.naming.NamingException: Lookup failed for 'java:comp/BeanManager'

堆栈跟踪的较长部分是

java.lang.IllegalStateException: javax.naming.NamingException: Lookup failed for 'java:comp/BeanManager' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} [Root exception is javax.naming.NamingException: Error retrieving java:comp/BeanManager [Root exception is java.lang.IllegalStateException: Cannot resolve bean manager]]
at org.omnifaces.util.JNDI.lookup(JNDI.java:87)
at org.omnifaces.config.BeanManager.init(BeanManager.java:76)
at org.omnifaces.config.BeanManager.getReference(BeanManager.java:115)
at org.omnifaces.application.OmniApplication.createConverter(OmniApplication.java:86)
at javax.faces.application.ApplicationWrapper.createConverter(ApplicationWrapper.java:403)
at org.primefaces.config.ConfigContainer.initConfig(ConfigContainer.java:69)

但我非常怀疑这个问题与Omnifaces有关,更多的是说我没有做任何凌乱的调用来引起这种情况。

WEB-INF中有一个beans.xml,它不是完全空的。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
   http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
    bean-discovery-mode="all">
    <interceptors>
    <class>x.y.z.security.SecurityInterceptor</class>
</interceptors>    
</beans>

对于discovery-mode = all,我知道不建议这样做,但这是由于我在此处发现的问题:https://java.net/jira/browse/GLASSFISH-20667

如果您需要更多信息,facets配置等,我很乐意发布它 - 但由于我已经没有想法在哪里找到问题我不想发布所有内容,如完整的POM,Glassfish ,Eclipse,Maven配置或所有代码。

修改2014-01-27

好的,在我写完下面的评论(评论中的评论)后,我有了一个主意。有人可以轻松检查/确认吗?在重新创建新数据库后,我能够将应用程序加载到GF。 eclipselink可以导致上述情况吗?我正在使用MS SQL Server 2012,当然我得到了SQLExceptions和警告,表示在重新部署时表+ fks已经存在,但警告应该不会使我的应用程序部署失败吗?

<persistence-unit name="xyzPersistenceUnit" transaction-type="JTA">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 
<jta-data-source>jdbc/xyzDS</jta-data-source>
  <properties>
    <property name="eclipselink.ddl-generation" value="create-tables"/>
    </properties>

0 个答案:

没有答案