问题标签 [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.
java - EJB 3.1 Embedded API - 单元测试 EJB + JPA 实体
有没有人这样做或试图为一个预先存在的项目这样做?
这里似乎有两个选择,或者使用嵌入式 EJB API,基本上是以下类
它期望配置的 glassfish v3 安装可用(应用程序范围的资源将使这更容易)。
另一种方法是使用嵌入式 glassfish jar 文件和嵌入式 glassfish API
我正在寻找已经或正在这样做的人的反馈,带有简单 EJB 和测试用例的博客链接等是一毛钱。
如果您使用任何其他 EJB 3.1 容器完成此操作,请随时分享。
- 您是否出于首选工具以外的原因使用任何特定的测试框架?
- 您使用了哪个 JPA 2.0 实现,这样做有什么特别的原因吗?
- 如果您使用 glassfish,您使用了上述哪种策略?如果不是,那么您使用的是哪个 EJB 3.1 容器?
- 如果您成功地做到了这一点,是否值得付出努力,您会为另一个现有项目再次这样做吗?
security - EJB 3.1 中使用 JAX-WS 的基本身份验证的部署说明
有很好的教程 Basic Authentication with JAX-WS
但它描述了基于 Web 的应用程序(战争)的部署描述。在 ejb jar 部署描述中描述是否可以通过?
对于 web.xml
我通过注释找到了安全规则的描述 -
GlassFish 和 Java EE 5 SDK 中的安全注释和授权
但这足够了吗?
比你!
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。
java - 是否可以从容器中收集一些 ejb 的实例?
场景:我有一些@Statefull
用于用户会话的 bean(不是 HTTP 会话,它是 Web 服务会话)。我需要管理每个用户的用户会话。
目标:我需要有可能收集@Statefull UserSession
实例并控制每个用户的最大会话数以及会话的生命周期。
问题:是否可以从 EJB 容器中获取 EJB 实例的集合,而不是将它们存储在某些集合、映射等中?
我正在使用 GlassFish v3、EJB 3.1、JAX-WS。
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
谢谢!
jakarta-ee - Glassfish webapp 中的 EJB 注入
我有一个应用程序正在尝试使用 @EJB 注释在我的 ejb.jar 文件中注入对 EJB 的远程引用。我得到不一致的结果。在一种情况下,我在 web.xml 中有一个侦听器,它被调用并且显然正确注入了 EJB,因为我可以看到它连接到 EJB 并在其上调用方法。在另一个类(struts2 操作)中,当它尝试访问 EJB 引用时,我得到了 NPE。据我所知,它们是相同的调用,位于同一个 .war 文件中的 Java 类中。
作为一种变通方法,我在构造函数中添加了代码以通过全局 JNDI 名称查找 EJB,它工作正常。我只是无法弄清楚为什么一个@EJB 有效,而不是另一个。
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:问题的原因可能是什么?
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的使用规则是什么?
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:这种情况有什么设计吗?
谢谢你。
java - JavaEE6 DAO:应该是@Stateless 还是@ApplicationScoped?
我目前正在创建一个 EJB3 数据访问类来处理我的 Java EE 6 应用程序中的所有数据库操作。现在,由于 Java EE 6 提供了新的ApplicationScoped
注解,我想知道我的 EJB 应该有什么状态,或者它是否应该是无状态的。
让 DAO 成为@Stateless
Session Bean 还是@ApplicationScoped
Bean 会更好吗?怎么样@Singleton
?这些与 DAO 相关的选项之间有什么区别?
编辑: 我正在使用带有完整 Java EE 6 平台的 Glassfish 3.0.1