【问题标题】:EJB 3.1 in war package in WEB-INF/classes - javax.ejb.CreateException: Could not create stateless EJB [duplicate]WEB-INF/classes 中的 War 包中的 EJB 3.1 - javax.ejb.CreateException:无法创建无状态 EJB [重复]
【发布时间】:2010-07-02 14:27:58
【问题描述】:

我想,我误解了在war包中打包ejb bean的规则。

目标:我想在war包中使用ejb bean。

场景:我的战争中有一些豆子:

@Stateless
public class RegistrationServiceBean {

    @PersistenceContext(unitName = "Utopia")
    EntityManager em;

    public RegistrationServiceBean() {}

    @Schedule(hour = "*", minute = "*", second = "*/15")
    public void baseRegistration() {
        System.out.println("call from ejb!!");
    }

    public void saveTempPartner(OasysPartnerTempEntity part) {
        em.persist(part);
        em.flush();
    }
}

它成功部署到 glassfish 服务器(ogs 3.0.1):

[#|2010-07-02T16:53:59.728+0300|INFO|oracle-glassfish3.0.1|javax.enterprise.system.container.ejb.com.sun.ejb.containers|_ThreadID=36;_ThreadName= Thread-1;|便携式 EJB 的 JNDI 名称 注册服务豆: [java:global/oasys/hydra/RegistrationServiceBean!ua.co.oasys.hydra.beans.RegistrationServiceBean, java:global/oasys/hydra/RegistrationServiceBean]|#]

但是当调度程序启动时,我得到:

[#|2010-07-02T16:54:20.004+0300|警告|oracle-glassfish3.0.1|javax.enterprise.system.container.ejb.com.sun.ejb.containers|_ThreadID=38;_ThreadName=线程 1;|A 期间发生系统异常 在 EJB 上调用 RegistrationServiceBean 方法公开 空白 ua.co.oasys.hydra.beans.RegistrationServiceBean.baseRegistration() javax.ejb.EJBException: javax.ejb.EJBException: javax.ejb.CreateException:不能 创建无状态 EJB com.sun.ejb.containers.StatelessSessionContainer._getContext(StatelessSessionContainer.java:448) 在 com.sun.ejb.containers.BaseContainer.getContext(BaseContainer.java:2467) 在 com.sun.ejb.containers.BaseContainer.preInvoke(BaseContainer.java:1860) 在 com.sun.ejb.containers.BaseContainer.callEJBTimeout(BaseContainer.java:3962) 在 com.sun.ejb.containers.EJBTimerService.deliverTimeout(EJBTimerService.java:1667) 在 com.sun.ejb.containers.EJBTimerService.access$100(EJBTimerService.java:98) 在 com.sun.ejb.containers.EJBTimerService$TaskExpiredWork.run(EJBTimerService.java:2485) 在 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) 在 java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) 在 java.util.concurrent.FutureTask.run(FutureTask.java:138) 在 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 在 java.lang.Thread.run(Thread.java:619) 引起:javax.ejb.EJBException: javax.ejb.CreateException:不能 创建无状态 EJB com.sun.ejb.containers.StatelessSessionContainer$SessionContextFactory.create(StatelessSessionContainer.java:720) 在 com.sun.ejb.containers.util.pool.NonBlockingPool.getObject(NonBlockingPool.java:200) 在 com.sun.ejb.containers.StatelessSessionContainer._getContext(StatelessSessionContainer.java:443) ... 12 更多原因: javax.ejb.CreateException:不能 创建无状态 EJB com.sun.ejb.containers.StatelessSessionContainer.createStatelessEJB(StatelessSessionContainer.java:528) 在 com.sun.ejb.containers.StatelessSessionContainer.access$000(StatelessSessionContainer.java:90) 在 com.sun.ejb.containers.StatelessSessionContainer$SessionContextFactory.create(StatelessSessionContainer.java:718) ... 14 更多原因: java.lang.NullPointerException 在 java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:768) 在 org.jboss.weld.manager.BeanManagerImpl.getBean(BeanManagerImpl.java:1171) 在 org.jboss.weld.manager.BeanManagerImpl.getBean(BeanManagerImpl.java:132) 在 org.glassfish.weld.services.JCDIServiceImpl._createJCDIInjectionContext(JCDIServiceImpl.java:145) 在 org.glassfish.weld.services.JCDIServiceImpl.createJCDIInjectionContext(JCDIServiceImpl.java:122) 在 com.sun.ejb.containers.BaseContainer.createEjbInstanceAndContext(BaseContainer.java:1616) 在 com.sun.ejb.containers.StatelessSessionContainer.createStatelessEJB(StatelessSessionContainer.java:469) ... 16 更多 |#]

所有应用程序都打包在ear中,里面有war,如果我在ejb-jar中部署ejb效果很好,但这不是我想要的。

删除焊接依赖后,部署时出现异常:

com.sun.enterprise.admin.cli.CommandException: 远程失败:出现异常 加载应用程序: org.glassfish.deployment.common.DeploymentException: 通过 java.lang.NoClassDefFoundError: ua/co/oasys/hydra/beans/RegistrationServiceBean

类似于glassfish bug,但我不确定。


更新: web.xml:

<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
    <display-name>CO UA Partners</display-name>
    <description>CO UA Partners Site</description>

    <context-param>
        <param-name>javax.faces.PROJECT_STAGE</param-name>
        <param-value>Development</param-value>
    </context-param>

    <context-param>
        <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
        <param-value>.xhtml</param-value>
    </context-param>

    <context-param>
        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
        <param-value>server</param-value>
    </context-param>


    <!--Prime Faces-->
    <context-param>
        <param-name>primefaces.skin</param-name>
        <param-value>sam</param-value>
    </context-param>



    <!--Prime Faces end-->

    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>


    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>/faces/*</url-pattern>
    </servlet-mapping>

    <context-param>
        <param-name>javax.faces.FACELETS_SKIP_COMMENTS</param-name>
        <param-value>true</param-value>
    </context-param>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>faces/index.xhtml</welcome-file>
    </welcome-file-list>

    <security-role>
        <role-name>manager</role-name>
    </security-role>
    <security-constraint>
        <web-resource-collection>
            <web-resource-name>Manager Pages</web-resource-name>
            <url-pattern>/faces/partner/manager/*</url-pattern>
            <url-pattern>/partner/manager/*</url-pattern>
            <url-pattern>/partner/*</url-pattern>
            <url-pattern>/faces/partner/*</url-pattern>
        </web-resource-collection>
        <auth-constraint>
            <role-name>manager</role-name>
        </auth-constraint>
    </security-constraint>

    <security-role>
        <role-name>admin</role-name>
    </security-role>
    <security-constraint>
        <web-resource-collection>
            <web-resource-name>Admin Pages</web-resource-name>
            <url-pattern>/faces/partner/admin/*</url-pattern>
            <url-pattern>/partner/admin/*</url-pattern>
            <url-pattern>/partner/*</url-pattern>
            <url-pattern>/faces/partner/*</url-pattern>
        </web-resource-collection>
        <auth-constraint>
            <role-name>admin</role-name>
        </auth-constraint>
    </security-constraint>

    <!--roots-->


    <security-role>
        <role-name>rmanager</role-name>
    </security-role>
    <security-role>
        <role-name>radmin</role-name>
    </security-role>
    <security-role>
        <role-name>bookkeper</role-name>
    </security-role>


    <login-config>
        <auth-method>FORM</auth-method>
        <realm-name>oasysRealm</realm-name>
        <form-login-config>
            <form-login-page>/faces/login.xhtml</form-login-page>
            <form-error-page>/faces/loginError.xhtml</form-error-page>
        </form-login-config>
    </login-config>



</web-app>

NoClassDefFoundError 异常:

[#|2010-07-04T16:16:26.401+0300|SEVERE|oracle-glassfish3.0.1|javax.enterprise.system.core.com.sun.enterprise.v3.server|_ThreadID=25;_ThreadName=线程 1;|异常 加载应用程序时 org.glassfish.deployment.common.DeploymentException: 通过 java.lang.NoClassDefFoundError: ua/co/oasys/hydra/RegistrationServiceBea 在 org.glassfish.weld.WeldDeployer.event(WeldDeployer.java:167) 在 org.glassfish.kernel.event.EventsImpl.send(EventsImpl.java:125) 在 org.glassfish.internal.data.ApplicationInfo.load(ApplicationInfo.java:224) 在 com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:338) 在 com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:183) 在 org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:272) 在 com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:305) 在 com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:320) 在 com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1176) 在 com.sun.enterprise.v3.admin.CommandRunnerImpl.access$900(CommandRunnerImpl.java:83) 在 com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1235) 在 com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1224) 在 com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:365) 在 com.sun.enterprise.v3.admin.AdminAdapter.service(AdminAdapter.java:204) 在 com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:166) 在 com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:100) 在 com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:245) 在 com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791) 在 com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693) 在 com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954) 在 com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170) 在 com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135) 在 com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102) 在 com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88) 在 com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76) 在 com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53) 在 com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57) 在 com.sun.grizzly.ContextTask.run(ContextTask.java:69) 在 com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330) 在 com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309) 在 java.lang.Thread.run(Thread.java:619) 引起:java.lang.RuntimeException: 通过 java.lang.NoClassDefFoundError: ua/co/oasys/hydra/RegistrationServiceBea 在 javassist.util.proxy.ProxyFactory.createClass3(ProxyFactory.java:344) 在 javassist.util.proxy.ProxyFactory.createClass2(ProxyFactory.java:314) 在 javassist.util.proxy.ProxyFactory.createClass(ProxyFactory.java:273) 在 org.jboss.weld.util.Proxies.createProxyClass(Proxies.java:187) 在 org.jboss.weld.util.Proxies.createProxyClass(Proxies.java:168) 在 org.jboss.weld.bean.SessionBean.initProxyClass(SessionBean.java:221) 在 org.jboss.weld.bean.SessionBean.initialize(SessionBean.java:143) 在 org.jboss.weld.bootstrap.AbstractBeanDeployer.deploy(AbstractBeanDeployer.java:110) 在 org.jboss.weld.bootstrap.BeanDeployment.deployBeans(BeanDeployment.java:151) 在 org.jboss.weld.bootstrap.WeldBootstrap.deployBeans(WeldBootstrap.java:377) 在 org.glassfish.weld.WeldDeployer.event(WeldDeployer.java:165) ... 30 更多 原因: javassist.CannotCompileException:由 java.lang.NoClassDefFoundError: ua/co/oasys/hydra/RegistrationServiceBea 在 javassist.util.proxy.FactoryHelper.toClass(FactoryHelper.java:169) 在 javassist.util.proxy.ProxyFactory.createClass3(ProxyFactory.java:339) ... 40 更多原因: java.lang.NoClassDefFoundError: ua/co/oasys/hydra/RegistrationServiceBea 在 java.lang.ClassLoader.defineClass1(本机 方法)在 java.lang.ClassLoader.defineClassCond(ClassLoader.java:632) 在 java.lang.ClassLoader.defineClass(ClassLoader.java:616) 在 sun.reflect.GeneratedMethodAccessor196.invoke(未知 来源)在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在 java.lang.reflect.Method.invoke(Method.java:597) 在 javassist.util.proxy.FactoryHelper.toClass2(FactoryHelper.java:181) 在 javassist.util.proxy.FactoryHelper.toClass(FactoryHelper.java:163) ... 41 更多原因: java.lang.ClassNotFoundException: ua.co.oasys.hydra.RegistrationServiceBea 在 com.sun.enterprise.loader.ASURLClassLoader.findClassData(ASURLClassLoader.java:713) 在 com.sun.enterprise.loader.ASURLClassLoader.findClass(ASURLClassLoader.java:626) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:307) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:248) ... 还有 49 个 |#]


更新 2:

如果删除/重命名 beans.xml 文件 ejbs 部署成功。


更新 3:

oasys.ear

jar xfv ~/Sites/workspace/Intellij_IDEA_9/Oasys/Oasys-ear/target/oasys.ear 创建:META-INF/膨胀: META-INF/MANIFEST.MF 创建:lib/ 膨胀:fenix.jar 膨胀: hydra.war 膨胀: javax.inject-1.jar 膨胀: jboss-interceptor-api-1.1-CR1.jar 膨胀:jsr250-api-1.0.jar 膨胀:lib/cdi-api-1.0-CR4.jar 膨胀: lib/eclipselink-2.1.0-SNAPSHOT.jar 膨胀: lib/javax.persistence-2.0.0.jar 膨胀:lib/slf4j-api-1.6.0.jar 膨胀:lib/slf4j-jdk14-1.6.0.jar 膨胀:lib/utopia.jar 膨胀: lib/weld-logger-1.0.0-CR2.jar 膨胀:META-INF/application.xml
创建:META-INF/maven/ 创建: META-INF/maven/ua.co.oasys/ 创建: META-INF/maven/ua.co.oasys/oasys-ear/ 膨胀: META-INF/maven/ua.co.oasys/oasys-ear/pom.xml 膨胀: META-INF/maven/ua.co.oasys/oasys-ear/pom.properties

hydra.war

jar xfv ~/Sites/workspace/Intellij_IDEA_9/Oasys/Hydra/target/hydra.war 创建:META-INF/膨胀: META-INF/MANIFEST.MF 创建: 合作伙伴/创建:合作伙伴/管理员/
创建:合作伙伴/经理/创建: 资源/创建:资源/css/
创建:资源/css/sam/ 创建: 资源/css/sam/images/ 创建: 资源/布局/创建: 资源/安全/创建:根/
创建:root/admin/ 创建: 根/簿记员/创建: root/manager/ 创建:WEB-INF/
创建:WEB-INF/classes/ 创建: WEB-INF/classes/ua/ 创建: WEB-INF/classes/ua/co/ 创建: WEB-INF/classes/ua/co/oasys/
创建: WEB-INF/classes/ua/co/oasys/hydra/
创建: WEB-INF/classes/ua/co/oasys/hydra/common/ 创建: WEB-INF/classes/ua/co/oasys/hydra/i18n/ 创建: WEB-INF/classes/ua/co/oasys/hydra/mb/ 创建: WEB-INF/classes/ua/co/oasys/hydra/mb/registration/ 创建: WEB-INF/classes/ua/co/oasys/hydra/mb/security/ 创建: WEB-INF/classes/ua/co/oasys/hydra/mb/ua/ 创建: WEB-INF/classes/ua/co/oasys/hydra/mb/ua/co/ 创建: WEB-INF/classes/ua/co/oasys/hydra/mb/ua/co/oasys/ 创建: WEB-INF/classes/ua/co/oasys/hydra/mb/ua/co/oasys/hydra/ 创建: WEB-INF/classes/ua/co/oasys/hydra/mb/ua/co/oasys/hydra/i18n/ 创建:WEB-INF/lib/ 膨胀: html5.html 膨胀:index.xhtml 膨胀:login.xhtml 膨胀: loginError.xhtml 膨胀: partner/admin/admin.xhtml 膨胀: 合伙人/经理/经理.xhtml 膨胀:partner/partner.xhtml 膨胀:register.xhtml 膨胀: 资源/css/cssLayout.css 膨胀: 资源/css/default.css 膨胀: 资源/css/master.css 膨胀: 资源/css/sam/images/sprite.png 膨胀: 资源/css/sam/images/ui-bg_flat_0_aaaaaa_40x100.png 膨胀: 资源/css/sam/images/ui-bg_flat_75_ffffff_40x100.png 膨胀: 资源/css/sam/images/ui-bg_glass_55_fbf9ee_1x400.png 膨胀: 资源/css/sam/images/ui-bg_glass_65_ffffff_1x400.png 膨胀: 资源/css/sam/images/ui-bg_glass_75_dadada_1x400.png 膨胀: 资源/css/sam/images/ui-bg_glass_75_e6e6e6_1x400.png 膨胀: 资源/css/sam/images/ui-bg_glass_95_fef1ec_1x400.png 膨胀: 资源/css/sam/images/ui-bg_highlight-soft_75_cccccc_1x100.png 膨胀: 资源/css/sam/images/ui-icons_222222_256x240.png 膨胀: 资源/css/sam/images/ui-icons_2e83ff_256x240.png 膨胀: 资源/css/sam/images/ui-icons_454545_256x240.png 膨胀: 资源/css/sam/images/ui-icons_888888_256x240.png 膨胀: 资源/css/sam/images/ui-icons_cd0a0a_256x240.png 膨胀:resources/css/sam/skin.css 膨胀: 资源/布局/doublevontent.xhtml 膨胀: 资源/布局/header.xhtml 膨胀: 资源/布局/masterLayout.xhtml 膨胀: 资源/prime-themes/vader/skin.css 膨胀: 资源/安全/loginPanel.xhtml 膨胀:root/admin/radmin.xhtml 膨胀: 根/簿记员/rbookkeeper.xhtml 膨胀:root/manager/rmanager.xhtml 膨胀:WEB-INF/beans.xml 膨胀: WEB-INF/classes/ua/co/oasys/hydra/common/SkinBean.class 膨胀: WEB-INF/classes/ua/co/oasys/hydra/i18n/messages.properties 膨胀: WEB-INF/classes/ua/co/oasys/hydra/i18n/messages_en_US.properties 膨胀: WEB-INF/classes/ua/co/oasys/hydra/i18n/messages_ru_RU.properties 膨胀: WEB-INF/classes/ua/co/oasys/hydra/i18n/messages_uk_UA.properties 膨胀: WEB-INF/classes/ua/co/oasys/hydra/mb/CustomCharacterEncodingFilter.class 膨胀: WEB-INF/classes/ua/co/oasys/hydra/mb/Messenger.class 膨胀: WEB-INF/classes/ua/co/oasys/hydra/mb/registration/TempReg.class 膨胀: WEB-INF/classes/ua/co/oasys/hydra/mb/security/LogOutActionListener.class 膨胀: WEB-INF/classes/ua/co/oasys/hydra/mb/security/LogoutServlet.class 膨胀: WEB-INF/classes/ua/co/oasys/hydra/mb/security/RulesBean.class 膨胀: WEB-INF/classes/ua/co/oasys/hydra/mb/security/SecurityBacking.class 膨胀: WEB-INF/classes/ua/co/oasys/hydra/mb/security/UserBean.class 膨胀: WEB-INF/classes/ua/co/oasys/hydra/mb/security/UserManager.class 膨胀: WEB-INF/classes/ua/co/oasys/hydra/mb/ua/co/oasys/hydra/i18n/Messages.class 膨胀: WEB-INF/classes/ua/co/oasys/hydra/mb/ua/co/oasys/hydra/i18n/Utf8ResourceBundle$1.class 膨胀: WEB-INF/classes/ua/co/oasys/hydra/mb/ua/co/oasys/hydra/i18n/Utf8ResourceBundle$Utf8PropertyResourceBundle.class 膨胀: WEB-INF/classes/ua/co/oasys/hydra/mb/ua/co/oasys/hydra/i18n/Utf8ResourceBundle.class 膨胀: WEB-INF/classes/ua/co/oasys/hydra/RegistrationServiceBea.class 膨胀:WEB-INF/faces-config.xml

膨胀: WEB-INF/lib/primefaces-2.1.RC1-SNAPSHOT.jar 膨胀:WEB-INF/sun-web.xml 膨胀:WEB-INF/web.xml 创建: META-INF/maven/ 创建: META-INF/maven/ua.co.oasys/ 创建: META-INF/maven/ua.co.oasys/hydra/ 膨胀: META-INF/maven/ua.co.oasys/hydra/pom.xml 膨胀: META-INF/maven/ua.co.oasys/hydra/pom.properties


  • Q1:使用 war 中打包的 ejb bean 是否可以接受(规范是这样的)?
  • Q2:我应该通过 ejb-jar.xml 描述一些配置吗?
  • Q3:问题的原因可能是什么?

【问题讨论】:

    标签: java jakarta-ee glassfish ejb-3.1 java-ee-6


    【解决方案1】:

    它类似于 glassfish bug,但我不确定。

    很难说,特别是因为您没有提供NoClassDefFoundError 的堆栈跟踪,但无论如何情况似乎不同。

    Q1:使用 war 中打包的 ejb bean 是否可以接受(规范是这样的)?

    当然。您可以将 EJB 类放入 WEB-INF/classes 或将它们打包为 EJB-JAR 并放入 WEB-INF/lib。我有几个演示应用程序这样做。

    Q2:我应该通过 ejb-jar.xml 描述一些配置吗?

    不,没有什么强迫你这样做的。

    Q3:问题的原因可能是什么?

    问题是我无法重现该问题...我已将您的 EJB 部署在启用了 [ejb, jpa, web, webservices, weld] 引擎的 web 应用程序中(我刚刚对其进行了修改以在预定方法中插入我的实体)并且它只是工作。使用最新版本的 GlassFish 3.0.1 进行测试。所以我怀疑你这边有错误或配置问题。

    以防万一,您能否提供jar xfv yourapp.war 的输出(同时显示您的web.xml)?

    【讨论】:

    【解决方案2】:

    打包在 WAR 中的 EJB 使用 EE6 的 web/lite 配置文件。据我所知,此配置文件不支持计时器和其他一些功能。 所以如果你想使用定时器你就得用传统的ejbjar + war + ear的方式来打包你的ejb。

    我找不到网络配置文件的参考,这是最接近比较的:http://www.theserverside.com/news/1321142/Part-Three-New-Features-in-EJB-31

    编辑: 我的立场是正确的,war 打包实际上在 jsr 318、EJB 3.1 中有所描述。由于我在规范的该部分中找不到对可用功能的任何限制,因此计时器也应该在战争中打包的 ejb 中工作。

    【讨论】:

    • 这是不正确。当打包在 WAR 中(与 EAR 相比)时,只有 EJB 的类加载不同(请参阅规范的 20.4 Enterprise Beans Packaged in a .war 部分了解全部详细信息)。但是使用 WAR 打包和使用 Web 配置文件实现只是两件不相关的事情。我正在使用带有“完整”实现和计时器的 WAR 包装。
    猜你喜欢
    • 2013-03-19
    • 1970-01-01
    • 2017-08-27
    • 1970-01-01
    • 1970-01-01
    • 2016-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多