3

私は、ejb Bean を war パッケージにパッケージ化する規則を誤解していたと思います。

目標: 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=スレッド-1 ;|EJB RegistrationServiceBean の移植可能な 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=Thread-1 ;|EJB RegistrationServiceBean メソッドの呼び出し中にシステム例外が発生しました public void ua.co.oasys.hydra.beans.RegistrationServiceBean.baseRegistration() javax.ejb.EJBException: javax.ejb.EJBException: javax.ejb.CreateException: できませんでしたcom.sun.ejb.containers.StatelessSessionContainer._getContext(StatelessSessionContainer.java:448) でステートレス EJB を作成します。 com.sun.ejb.containers.BaseContainer.callEJBTimeout(BaseContainer.java:3962) の BaseContainer.preInvoke(BaseContainer.java:1860) com.sun.ejb.containers.EJBTimerService.deliveryTimeout(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: com.sun.ejb.containers.StatelessSessionContainer$SessionContextFactory でステートレス EJB を作成できませんでした。com.sun.ejb.containers.util.pool.NonBlockingPool.getObject(NonBlockingPool.java:200) で create(StatelessSessionContainer.java:720) com.sun.ejb.containers.StatelessSessionContainer._getContext(StatelessSessionContainer.java:443) で... 12 以上 原因: javax.ejb.CreateException: com.sun.ejb.containers.StatelessSessionContainer.createStatelessEJB(StatelessSessionContainer.java:528) で com.sun.ejb.containers.StatelessSessionContainer.access にステートレス EJB を作成できませんでしたcom.sun.ejb.containers.StatelessSessionContainer$SessionContextFactory.create(StatelessSessionContainer.java:718) で $000(StatelessSessionContainer.java:90) ... 14 以上 原因: java.util.concurrent.ConcurrentHashMap での java.lang.NullPointerException org.jboss.weld.manager.BeanManagerImpl の .get(ConcurrentHashMap.java:768)。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 件 |#]java:122) com.sun.ejb.containers.BaseContainer.createEjbInstanceAndContext(BaseContainer.java:1616) で com.sun.ejb.containers.StatelessSessionContainer.createStatelessEJB(StatelessSessionContainer.java:469) ... 16 さらに |#]java:122) com.sun.ejb.containers.BaseContainer.createEjbInstanceAndContext(BaseContainer.java:1616) で com.sun.ejb.containers.StatelessSessionContainer.createStatelessEJB(StatelessSessionContainer.java:469) ... 16 さらに |#]

すべてのアプリケーションは、war を使用して in ear にパッケージ化されています。ejb を ejb-jar にデプロイするとうまく機能しますが、これは私が望むものではありません。

溶接の依存関係を削除した後、展開中に例外が発生しました:

com.sun.enterprise.admin.cli.CommandException: リモート障害: アプリのロード中に例外が発生しました: org.glassfish.deployment.common.DeploymentException: java.lang.NoClassDefFoundError による: ua/co/oasys/hydra/beans/RegistrationServiceBean

これはグラスフィッシュのバグに似ていますが 、よくわかりません。


更新: 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=Thread-1 ;|アプリ org.glassfish.deployment.common.DeploymentException のロード中に例外が発生しました: by java.lang.NoClassDefFoundError: ua/co/oasys/hydra/RegistrationServiceBea at 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) at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:245) at 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) at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102) at 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) at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309) at java.lang.Thread.run(Thread.java:619) ) 原因: java.lang.RuntimeException: by java.lang.NoClassDefFoundError: ua/co/oasys/hydra/RegistrationServiceBea at javassist.util.proxy.ProxyFactory.createClass3(ProxyFactory.java:344) at javassist.util.proxy. org.jboss.weld.util.Proxies の javassist.util.proxy.ProxyFactory.createClass(ProxyFactory.java:273) の ProxyFactory.createClass2(ProxyFactory.java:314)。createProxyClass(Proxies.java:187) org.jboss.weld.util.Proxies.createProxyClass(Proxies.java:168) org.jboss.weld.bean.SessionBean.initProxyClass(SessionBean.java:221) org.jboss org.jboss.weld.bootstrap.AbstractBeanDeployer.deploy(AbstractBeanDeployer.java:110) の .weld.bean.SessionBean.initialize(SessionBean.java:143) 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 : by java.lang.NoClassDefFoundError: ua/co/oasys/hydra/RegistrationServiceBea at javassist.util.proxy.FactoryHelper.toClass(FactoryHelper.java:169) at javassist.util.proxy.ProxyFactory.createClass3(ProxyFactory.java:339) ... 40 以上 原因: java.lang.NoClassDefFoundError: ua/co/oasys/hydra/RegistrationServiceBea at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader. defineClassCond(ClassLoader.java:632) at java.lang.ClassLoader.defineClass(ClassLoader.java:616) at sun.reflect.GeneratedMethodAccessor196.invoke(Unknown Source) at 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 at 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

ヒドラ戦争

jar xfv ~/Sites/workspace/Intellij_IDEA_9/Oasys/Hydra/target/hydra.war 作成: META-INF/ 膨張: META-INF/MANIFEST.MF 作成: partner/ 作成: partner/admin/
作成: partner/manager/作成: resources/ 作成: resources/css/
作成: resources/css/sam/ 作成: resources/css/sam/images/ 作成: resources/layout/ 作成: resources/security/ 作成: root/
作成: root/admin/作成: root/bookkeeper/ 作成: 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 膨張: partner/manager/manager.xhtml 膨張: partner/partner.xhtml 膨張:register.xhtml 膨張: resources/css/cssLayout.css 膨張: resources/css/default.css 膨張: resources/css/master.css 膨張: resources/css/sam/images/sprite.png 膨張: resources/css/sam /images/ui-bg_flat_0_aaaaaa_40x100.png 膨張: resources/css/sam/images/ui-bg_flat_75_ffffff_40x100.png 膨張: resources/css/sam/images/ui-bg_glass_55_fbf9ee_1x400.png 膨張: resources/css/sam/images/ui- bg_glass_65_ffffff_1x400.png 膨張: resources/css/sam/images/ui-bg_glass_75_dadada_1x400.png 膨張: resources/css/sam/images/ui-bg_glass_75_e6e6e6_1x400.png 膨張: resources/css/sam/images/ui-bg_glass_95_fef1ec_1x4: resources/css/sam/images/ui-bg_highlight-soft_75_cccccc_1x100.png 膨張: resources/css/sam/images/ui-icons_222222_256x240.png 膨張:resources/css/sam/images/ui-icons_2e83ff_256x240.png 膨張: resources/css/sam/images/ui-icons_454545_256x240.png 膨張: resources/css/sam/images/ui-icons_888888_256x240.png 膨張: resources/css/sam /images/ui-icons_cd0a0a_256x240.png 膨張: resources/css/sam/skin.css 膨張: resources/layout/doublevontent.xhtml 膨張: resources/layout/header.xhtml 膨張: resources/layout/masterLayout.xhtml 膨張: resources/ prime-themes/vader/skin.css 膨張: resources/security/loginPanel.xhtml 膨張: root/admin/radmin.xhtml 膨張: root/bookkeeper/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。膨張したクラス: 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 inflated: WEB-INF/classes/ua/co/oasys/hydra/mb/ua/co/oasys/hydra/i18n/Utf8ResourceBundle.膨張したクラス: WEB-INF/classes/ua/co/oasys/hydra/RegistrationServiceBea.class 膨張した: WEB-INF/faces-config.xmlWEB-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.xmlWEB-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: 問題の原因は何ですか?
4

2 に答える 2

1

グラスフィッシュのバグに似ていますが、よくわかりません。

特に のスタックトレースを提供していないため、言うのは難しいですがNoClassDefFoundError、とにかくシナリオは異なるようです。

Q1: war でパッケージ化された ejb Bean を使用することは無難ですか (仕様は悲しいです)?

絶対。EJB クラスを に入れるかWEB-INF/classes、EJB-JAR としてパッケージ化してに入れることができますWEB-INF/lib。これを行うデモアプリケーションがいくつかあります。

Q2: ejb-jar.xml で設定を記述する必要がありますか?

いいえ、そうするよう強制するものは何もありません。

Q3: 問題の原因は何ですか?

問題は、問題を再現できなかったことです...[ejb, jpa, web, webservices, weld]エンジンが有効になっている webapp に EJB をデプロイしました (スケジュールされたメソッドに私のエンティティを挿入するように変更しただけです)。GlassFish 3.0.1 の最新バージョンでテスト済み。したがって、あなたの側に間違いまたは構成の問題があると思われます。

念のため、出力を提供していただけますかjar xfv yourapp.war(また、あなたの を表示してくださいweb.xml)?

于 2010-07-02T20:04:00.730 に答える
0

WAR にパッケージ化された EJB は、EE6 の web / lite プロファイルを使用しています。私の知る限り、このプロファイルではタイマーやその他の機能はサポートされていません。したがって、タイマーを使用する場合は、ejb を従来の ejbjar + war + ear の方法でパッケージ化する必要があります。

Web プロファイルのリファレンスが見つかりませんでした。これが比較に最も近いものです: http://www.theserverside.com/news/1321142/Part-Three-New-Features-in-EJB-31

編集:私は修正されたままです.warパッケージングは​​実際にはjsr 318、EJB 3.1で説明されています。仕様のそのセクションで利用可能な機能に関する制限を見つけることができなかったので、タイマーは war にパッケージ化された ejb でも動作するはずです。

于 2010-07-02T20:00:24.293 に答える