问题标签 [ejb-3.1]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
4661 浏览

java - EJB 3.1 Embedded API - 单元测试 EJB + JPA 实体

有没有人这样做或试图为一个预先存在的项目这样做?
这里似乎有两个选择,或者使用嵌入式 EJB API,基本上是以下类

它期望配置的 glassfish v3 安装可用(应用程序范围的资源将使这更容易)。

另一种方法是使用嵌入式 glassfish jar 文件和嵌入式 glassfish API

我正在寻找已经或正在这样做的人的反馈,带有简单 EJB 和测试用例的博客链接等是一毛钱。

如果您使用任何其他 EJB 3.1 容器完成此操作,请随时分享。

  1. 您是否出于首选工具以外的原因使用任何特定的测试框架?
  2. 您使用了哪个 JPA 2.0 实现,这样做有什么特别的原因吗?
  3. 如果您使用 glassfish,您使用了上述哪种策略?如果不是,那么您使用的是哪个 EJB 3.1 容器?
  4. 如果您成功地做到了这一点,是否值得付出努力,您会为另一个现有项目再次这样做吗?
0 投票
1 回答
867 浏览

security - EJB 3.1 中使用 JAX-WS 的基本身份验证的部署说明

有很好的教程 Basic Authentication with JAX-WS

但它描述了基于 Web 的应用程序(战争)的部署描述。在 ejb jar 部署描述中描述是否可以通过?

对于 web.xml

我通过注释找到了安全规则的描述 -

GlassFish 和 Java EE 5 SDK 中的安全注释和授权

但这足够了吗?

比你!

0 投票
1 回答
5374 浏览

java - 新的有状态会话 bean 实例,无需调用查找

设想:

我有@Singleton UserFactory@Stateless可能是),它的方法是通过手动查找createSession()生成bean。@Stateful UserSession

如果我通过 DI 注入@EJB- 我将在调用方法期间获得相同的实例fromFactory()(应该如此)

我想要的 - 是在UserSession不进行查找的情况下获得新实例。

Q1:如何调用@Stateful会话 bean 的新实例?

代码:

据我了解,调用

不是最好的主意

Q2:是真的吗?


#

更新

目标

实际上,目标是创建一些 SessionsFactory 来管理用户的会话(这是 Web 服务用户)

会话@Statefull bean:

在工厂方法中,我只想创建 @Statefull UserSession 的新实例并管理为每个用户创建的会话数,并在一段时间(30 分钟)后调用 destroySession()

我需要跟踪用户会话请求的历史记录,并在以后保留历史记录..

所以我认为@Statefull bean 应该满足我的需求。但看起来通过 JNDI 名称查找是支持创建新 ejb 的唯一机会。我正在寻找在
没有查找的情况下注入新的 ejb 实例的可能性,并且可能有可能获取我的 @Statefull UserSession 当前创建的实例的集合,而不是将 thrm 保存在某个映射/集合中。

Q3:所以.. 只有 JNDI 会帮助我创建新的 ejb 实例?

Q4:是否可以从容器中获取一些 ejb 实例的集合?


我正在使用 glassfish v3,ejb 3.1。

0 投票
1 回答
206 浏览

java - 是否可以从容器中收集一些 ejb 的实例?

场景:我有一些@Statefull用于用户会话的 bean(不是 HTTP 会话,它是 Web 服务会话)。我需要管理每个用户的用户会话。

目标:我需要有可能收集@Statefull UserSession实例并控制每个用户的最大会话数以及会话的生命周期。

问题:是否可以从 EJB 容器中获取 EJB 实例的集合,而不是将它们存储在某些集合、映射等中?

我正在使用 GlassFish v3、EJB 3.1、JAX-WS。

0 投票
2 回答
4452 浏览

maven-2 - @WebServices 作为 ejb jar 中的 @Stateless 会话 bean

场景:创建一些Web服务作为@Stateless bean,将其打包为ejb jar。结果 - 无法访问 wsdl 文件。

目标:我想将@WebServices 用作@Stateless 会话,使用ejb jar 打包和可访问的wsdl 文件形式的web。

网络服务:

在这种情况下,我得到

wsdl 请求无效 http://192.168.44.48:8181/ws.isp.SecurityService/SecurityService

当我尝试访问 wsdl 并且如果不使用 wsdlLocation 的描述,我会得到空白页。

Web 服务,因为它自我运作良好。

Q1:在 ejb jar 中将 Web 服务的 wsdl 文件位置描述为无状态的规则是什么?

Q2:maven打包时是否可以生成wsdl文件?

Q3:如何为我们有@Stateless和@EJB等注解的Web服务生成wsdl文件(目前我只能通过注释这些注解来生成它)

环境:mave 2、ejb 3.1、glassfish v3、jax-ws 2.x

谢谢!

0 投票
1 回答
1884 浏览

jakarta-ee - Glassfish webapp 中的 EJB 注入

我有一个应用程序正在尝试使用 @EJB 注释在我的 ejb.jar 文件中注入对 EJB 的远程引用。我得到不一致的结果。在一种情况下,我在 web.xml 中有一个侦听器,它被调用并且显然正确注入了 EJB,因为我可以看到它连接到 EJB 并在其上调用方法。在另一个类(struts2 操作)中,当它尝试访问 EJB 引用时,我得到了 NPE。据我所知,它们是相同的调用,位于同一个 .war 文件中的 Java 类中。

作为一种变通方法,我在构造函数中添加了代码以通过全局 JNDI 名称查找 EJB,它工作正常。我只是无法弄清楚为什么一个@EJB 有效,而不是另一个。

0 投票
2 回答
8821 浏览

java - WEB-INF/classes 中 war 包中的 EJB 3.1 - javax.ejb.CreateException:无法创建无状态 EJB

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

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

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

它成功部署到 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 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) 在 com.sun.ejb.containers.BaseContainer.getContext(BaseContainer.java:2467) 在 com.sun.ejb.containers 创建无状态 EJB。 BaseContainer.preInvoke(BaseContainer.java:1860) 在 com.sun.ejb.containers.BaseContainer.callEJBTimeout(BaseContainer.java:3962) 在 com.sun.ejb.containers.EJBTimerService。com.sun.ejb.containers.EJBTimerService.access$100(EJBTimerService.java:98) 上的 deliverTimeout(EJBTimerService.java:1667) 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.StatelessSessionContainer._getContext(StatelessSessionContainer.java:443) 处创建 (StatelessSessionContainer.java:720) ... 12 更多原因:javax.ejb.CreateException: 无法在 com.sun.ejb.containers.StatelessSessionContainer.createStatelessEJB(StatelessSessionContainer.java:528) 在 com.sun.ejb.containers.StatelessSessionContainer.access 创建无状态 EJB $000(StatelessSessionContainer.java:90) at com.sun.ejb.containers.StatelessSessionContainer$SessionContextFactory.create(StatelessSessionContainer.java:718) ... 14 更多原因:java.util.concurrent.ConcurrentHashMap 的 java.lang.NullPointerException .get(ConcurrentHashMap.java:768) 在 org.jboss.weld.manager.BeanManagerImpl。getBean(BeanManagerImpl.java:1171) at org.jboss.weld.manager.BeanManagerImpl.getBean(BeanManagerImpl.java:132) at org.glassfish.weld.services.JCDIServiceImpl._createJCDIInjectionContext(JCDIServiceImpl.java:145) at 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 更多 |#]

所有应用程序都打包在 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:

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) at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:183) at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:272) at 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) at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$900(CommandRunnerImpl.java:83) at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java: 1235)在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。 com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76) 上的 DefaultProtocolChain.execute(DefaultProtocolChain.java:88)。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。 org.jboss.weld.util.Proxies 的 javassist.util.proxy.ProxyFactory.createClass(ProxyFactory.java:273) 的 ProxyFactory.createClass2(ProxyFactory.java:314)。createProxyClass(Proxies.java:187) at org.jboss.weld.util.Proxies.createProxyClass(Proxies.java:168) at org.jboss.weld.bean.SessionBean.initProxyClass(SessionBean.java:221) at 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) at org.jboss.weld.bootstrap.WeldBootstrap.deployBeans(WeldBootstrap.java:377) at 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 at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader。在 sun.reflect.GeneratedMethodAccessor196.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 的 java.lang.ClassLoader.defineClass(ClassLoader.java:616) 的 defineClassCond(ClassLoader.java:632)在 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 更多原因:com.sun.enterprise.loader 上的 java.lang.ClassNotFoundException: ua.co.oasys.hydra.RegistrationServiceBea。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:

osys.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 创建:合作伙伴/ 创建:合作伙伴/管理员/
创建:合作伙伴/经理/创建: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 膨胀:合作伙伴/管理员/管理员。 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_905_fef1ec_1x资源/css/sam/images/ui-bg_highlight-soft_75_cccccc_1x100.png 膨胀:资源/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 膨胀: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:问题的原因可能是什么?
0 投票
1 回答
1446 浏览

jakarta-ee - CDI 在部署到 glassfish v3.0.1 的耳朵中不起作用

我在使用焊接记录器注入时遇到了一些问题。

场景:我的耳朵里面有 ejb-jar。

这是我的 ejb bean:

当 print1Partner 调用我得到异常:

|2010-07-02T19:25:35.003+0300|警告|oracle-glassfish3.0.1|javax.enterprise.system.container.ejb.com.sun.ejb.containers|_ThreadID=48;_ThreadName=Thread-1;|调用 EJB PartnersService 方法时发生系统异常 public void ua.co.oasys.fenix.persistence.PartnersService.print1Partner() 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。com.sun.ejb.containers.EJBTimerService.access$100(EJBTimerService.java:98) 上的 deliverTimeout(EJBTimerService.java:1667) 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.StatelessSessionContainer._getContext(StatelessSessionContainer.java:443) 处创建(StatelessSessionContainer.java:720) ... 12 更多原因:javax.ejb.CreateException: 无法在 com.sun.ejb.containers.StatelessSessionContainer.createStatelessEJB(StatelessSessionContainer.java:528) 在 com.sun.ejb.containers.StatelessSessionContainer.access 创建无状态 EJB $000(StatelessSessionContainer.java:90) at com.sun.ejb.containers.StatelessSessionContainer$SessionContextFactory.create(StatelessSessionContainer.java:718) ... 14 更多原因:java.util.concurrent.ConcurrentHashMap 的 java.lang.NullPointerException .get(ConcurrentHashMap.java:768) 在 org.jboss.weld.manager.BeanManagerImpl。getBean(BeanManagerImpl.java:1171) at org.jboss.weld.manager.BeanManagerImpl.getBean(BeanManagerImpl.java:132) at org.glassfish.weld.services.JCDIServiceImpl._createJCDIInjectionContext(JCDIServiceImpl.java:145) at 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 个 |#]createJCDIInjectionContext(JCDIServiceImpl.java:122) at com.sun.ejb.containers.BaseContainer.createEjbInstanceAndContext(BaseContainer.java:1616) at com.sun.ejb.containers.StatelessSessionContainer.createStatelessEJB(StatelessSessionContainer.java:469) ... 16更多 |#]createJCDIInjectionContext(JCDIServiceImpl.java:122) at com.sun.ejb.containers.BaseContainer.createEjbInstanceAndContext(BaseContainer.java:1616) at com.sun.ejb.containers.StatelessSessionContainer.createStatelessEJB(StatelessSessionContainer.java:469) ... 16更多 |#]

使用:ejb 3.1,glassfish 3.0.1

一些maven依赖:

耳朵 pom.xml

META-INF/ 中的 bean.xml

在没有 ejb 的情况下使用 war in ear 的相同配置(在战争中,但如果我在战争和焊接中使用 ejb - 同样的例外)

Q1:怎么了?

Q2:weld & ejb 3.1的使用规则是什么?

0 投票
2 回答
3471 浏览

jakarta-ee - 带有 ejb 3.1 的 CDI,glassfish v3.0.1 上的焊接记录器

场景:1)创建maven ear项目,在里面创建war项目2)将beans.xml添加到war项目的WEB-INF/ 3)创建简单的@Steateless bean

项目 - http://drp.ly/1j5C3t

ejb 豆:

战争项目的maven pom-xml:

ear项目的maven pom.xml:

测试用例 1(问题):使用 beans.xml 部署项目给出异常:

[#|2010-07-04T19:36:50.003+0300|警告|oracle-glassfish3.0.1|javax.enterprise.system.container.ejb.com.sun.ejb.containers|_ThreadID=33;_ThreadName=Thread-1 ;|在调用 EJB TestEjb 方法时发生系统异常 public void TestEjb.print1Partner() javax.ejb.EJBException: javax.ejb.EJBException: javax.ejb.CreateException: 无法在 com.sun.ejb 创建无状态 EJB。 container.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.EJBTimerService.deliverTimeout(EJBTimerService.java:1667) 在 com.sun.ejb.containers 的 com.sun.ejb.containers.BaseContainer.callEJBTimeout(BaseContainer.java:3962)。EJBTimerService.access$100(EJBTimerService.java:98) at com.sun.ejb.containers.EJBTimerService$TaskExpiredWork.run(EJBTimerService.java:2485) at 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) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:619) 原因:javax.ejb.EJBException: javax .ejb.CreateException:无法在 com.sun.ejb.containers.StatelessSessionContainer$SessionContextFactory.create(StatelessSessionContainer.java:720) 在 com.sun.ejb.containers.util.pool 创建无状态 EJB。NonBlockingPool.getObject(NonBlockingPool.java:200) at com.sun.ejb.containers.StatelessSessionContainer._getContext(StatelessSessionContainer.java:443) ... 12 更多原因:javax.ejb.CreateException:无法在 com 创建无状态 EJB .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 更多原因: org.jboss.weld.manager.BeanManagerImpl.getBean 的 java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:768) 的 java.lang.NullPointerException (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 更多 |#] [#|2010-07-04T19 :36:50.004+0300|INFO|oracle-glassfish3.0.1|javax.enterprise.system.container.ejb.com.sun.ejb.containers|_ThreadID=33;_ThreadName=Thread-1;|EJB5119:清除计时器 [' 13@@1278255602087@@server@@oasys''TimedObject = TestEjb''应用程序 = testo''BEING_DELIVERED''PERIODIC''容器 ID = 83771744647118848' 'Sun Jul 04 19:36:45 EEST 2010' '0' '*/15 # * # * # * # * # * # * # null # null # null # true # print1Partner # 0' ] [2] 交付失败后|#]

[#|2010-07-04T19:37:00.000+0300|INFO|oracle-glassfish3.0.1|javax.enterprise.system.std.com.sun.enterprise.v3.services.impl|_ThreadID=33;_ThreadName=Thread -1;|这是测试|#]

期待结果:

伊尔贾阿

这是测试

结果 :

例外

这是测试


案例 2:删除 beans.xml

期待结果:

伊尔贾阿

这是测试

结果

伊尔贾阿

这是测试

目标:我想在包含其他战争和 ejb 项目的耳朵档案内的 web 项目中使用 ejb 焊接(CDI),但我不希望分离我的 web 项目(战争 + ejb)

工具和环境:maven & ejb 3.1 &weld & glassfish 3.0.1

Q1:这可能是某种特定的玻璃鱼虫吗?Q2:什么可能是问题的原因?Q3:这种情况有什么设计吗?

谢谢你。

0 投票
3 回答
18196 浏览

java - JavaEE6 DAO:应该是@Stateless 还是@ApplicationScoped?

我目前正在创建一个 EJB3 数据访问类来处理我的 Java EE 6 应用程序中的所有数据库操作。现在,由于 Java EE 6 提供了新的ApplicationScoped注解,我想知道我的 EJB 应该有什么状态,或者它是否应该是无状态的。

让 DAO 成为@StatelessSession Bean 还是@ApplicationScopedBean 会更好吗?怎么样@Singleton?这些与 DAO 相关的选项之间有什么区别?

编辑: 我正在使用带有完整 Java EE 6 平台的 Glassfish 3.0.1