当前位置: 首页 > 知识库问答 >
问题:

GlassFish 5.0.1(使用Java 8)支持EJB2.1和EJB3.1吗?

东郭宏朗
2023-03-14

GlassFish 5.0.1(使用Java 8)支持EJB2.1和EJB3.1吗?

我用Payara安装了GlassFish,并尝试部署我的。EAR应用程序带有EJB3.1实体和会话bean,它挂起在ServletContext上。log():初始化Spring根WebApplicationContext

我等了几个小时,什么也没等。是的,我知道,EJB已经死了,我应该迁移到spring。。。我只是在寻找替代方案,在不进行任何迁移的情况下保留我的旧的基于EJB的应用程序

完整的最后日志行:

...
[2020-06-11T16:22:27.773+0300] [Payara 5.201] [INFO] [AS-EJB-00054] [javax.enterprise.ejb.container] [tid: ThreadID=101 ThreadName=admin-thread-pool::admin-listener(1)] [timeMillis: 1591881747773] [levelValue: 800] [[
  Portable JNDI names for EJB WulogEJB: [java:global/CCC-ear-RAYAPP-1.0.1-SNAPSHOT-payaraora/CCC-ejb-entity-in-payara-1.0.1-SNAPSHOT/WulogEJB, java:global/CCC-ear-RAYAPP-1.0.1-SNAPSHOT-payaraora/CCC-ejb-entity-in-payara-1.0.1-SNAPSHOT/WulogEJB!com.Tree.common.entityejb.WulogEntityHome]]]

[2020-06-11T16:22:27.922+0300] [Payara 5.201] [INFO] [] [javax.enterprise.web] [tid: ThreadID=101 ThreadName=admin-thread-pool::admin-listener(1)] [timeMillis: 1591881747922] [levelValue: 800] [[
  WebModule[/TreeOnline-RAYAPP] ServletContext.log():No Spring WebApplicationInitializer types detected on classpath]]

[2020-06-11T16:22:28.011+0300] [Payara 5.201] [INFO] [jsf.config.listener.version] [javax.enterprise.resource.webcontainer.jsf.config] [tid: ThreadID=101 ThreadName=admin-thread-pool::admin-listener(1)] [timeMillis: 1591881748011] [levelValue: 800] [[
  Initializing Mojarra |version.string| for context '/TreeOnline-RAYAPP']]

[2020-06-11T16:22:28.471+0300] [Payara 5.201] [INFO] [] [javax.enterprise.web] [tid: ThreadID=101 ThreadName=admin-thread-pool::admin-listener(1)] [timeMillis: 1591881748471] [levelValue: 800] [[
  WebModule[/TreeOnline-RAYAPP] ServletContext.log():Initializing Spring root WebApplicationContext]]
  • 我做了玻璃鱼网。要在EAR中添加的xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
<glassfish-web-app>
  <security-domain>java:/TreeSecurityDomain</security-domain>
  <resource-ref>
    <res-ref-name>jdbc/treeDataSource</res-ref-name>
    <jndi-name>treeDataSource</jndi-name>
  </resource-ref>
</glassfish-web-app>

我以前使用过Wildfly,但在版本9之后它删除了EJB实体支持。我已经用EJB3.1实体和会话bean在Java8上编译了我的应用程序。已在下创建连接-

也许是我的玻璃鱼缸。xml是否使用了错误的语法?

<?xml version="1.0" encoding="UTF-8"?>
<glassfish-ejb-jar xmlns:jboss="http://www.jboss.com/xml/ns/javaee"
    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:s="urn:security:1.1"
    xsi:schemaLocation="http://www.jboss.com/xml/ns/javaee http://www.jboss.org/j2ee/schema/jboss-ejb3-2_0.xsd
                     http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_1.xsd"
    version="3.1" impl-version="2.1">
    <assembly-descriptor>
        <s:security>
            <ejb-name>*</ejb-name>
            <s:security-domain>TreeSecurityDomain</s:security-domain>
            <s:missing-method-permissions-deny-access>false</s:missing-method-permissions-deny-access>
        </s:security>
        <container-transaction>
            <method>
                <ejb-name>*</ejb-name>
                <method-name>*</method-name>
            </method>
            <trans-attribute>Supports</trans-attribute>
        </container-transaction>
    </assembly-descriptor>

    <enterprise-beans>
        <entity>
            <ejb-name>AminataEJB</ejb-name>
            <resource-ref>
                <res-ref-name>jdbc/treeDataSource</res-ref-name>
                <jndi-name>java:treeDataSource</jndi-name>
            </resource-ref>
        </entity>
        <entity>
            <ejb-name>AmeliaEJB</ejb-name>
            <resource-ref>
                <res-ref-name>jdbc/treeDataSource</res-ref-name>
                <jndi-name>java:treeDataSource</jndi-name>
            </resource-ref>
        </entity>
    </enterprise-beans>
</glassfish-ejb-jar>

会不会是因为描述标签?

xmlns:jboss="http://www.jboss.com/xml/ns/javaee"

xsi:schemaLocation="http://www.jboss.com/xml/ns/javaee http://www.jboss.org/j2ee/schema/jboss-ejb3-2_0.xsd
                     http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_1.xsd"

?

共有1个答案

姬乐池
2023-03-14

启用了调试级别,并看到了很多:

DEBUG o.s.jndi.JndiObjectFactoryBean - Converted JNDI name [java:comp/env/TREE/treeDataSource] not found - trying original name [TREE/treeDataSource]. javax.naming.NamingException: Lookup failed for 'java:comp/env/TREE/treeDataSource' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitTreeFactory, 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.NameNotFoundException: No object bound to name java:comp/env/TREE/treeDataSource]

这是否意味着我需要编辑从java:treeDataSourcejava:comp/env/TREE/treeDataSource的所有JNDI绑定?

 类似资料:
  • 我正在制作一个基于Java EE的产品,其中我使用了GlassFish 3和EJB 3.1。 我的应用程序有会话bean,一个调度程序,并且使用web服务。我最近了解了Apache TomEE,它支持上下文和依赖注入(CDI)。GlassFish容器也支持CDI。 如果我不需要CDI也不提供的任何特性,我可以替换会话bean吗?如果那样的话,我能得到什么好处呢?

  • Android Studio的正式版2已经在2天前发布了。 这个版本支持Java8吗?

  • 我在阅读Java8中的interface时遇到了这个主题,在有些情况下,我们使用default或static关键字在interface中定义方法,允许下一个子程序重新定义相同的方法或实现它。那是不是意味着多重继承?还有一个问题,我发现,返回类型必须是协变类型,否则编译问题,这意味着它仍然不支持多重继承?我们能说java支持多重继承吗?让我知道关于这个话题的更多细节。

  • 我们能同时使用spray-json支持https://doc.akka.io/docs/akka-http/current/common/json-support.html和XML支持https://doc.akka.io/docs/akka-http/current/common/xml-support.html吗 我尝试了以下方法,通过使用JsonProtocols和ScalaXmlSuppo

  • 我有一个restful web服务,支持HATEOAS链接。当我打电话时“http://localhost:8080/v1/bookings/1225380?lock=true“链接我得到了以下资源URL。我想将这些超媒体与我的Angular2应用程序(最近升级到最终版本)集成。我发现很少有资源是在Angular1支持下实现的(链接-https://paulcwarren.wordpress.co

  • 我对Android Studio3.0金丝雀有一个问题。在所有项目中,我不能使用预览工具中的支持库中的任何视图。显示呈现错误。在新项目中也是同样的问题。 Samople代码: 格雷德尔: