问题标签 [stateless-session-bean]
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.
dependency-injection - WELD-001408 注入 EntityManager 时不满足的依赖关系
我有@Stateless
实现两个接口(远程和本地)的bean。我还添加@LocalBean
了使用无接口视图访问 bean 的注释。
@Inject
出于这个原因,我使用这个JBoss AS7 快速入门示例:
我们使用来自 CDI 的“资源生产者”模式,将实体管理器的老式 @PersistenceContext 注入“别名”为 CDI 样式注入。这允许我们在整个应用程序中使用一致的注入样式 (@Inject)。
现在我以前使用过:
在 EJB 中,它可以正常工作。但是使用@Inject
注释我得到这个错误:
WELD-001408 在注入点 [[field] @Inject private ejb.WeatherDataBean.entityManager] 具有限定符 [@Default] 的类型 [EntityManager] 的依赖关系不满足
这是我定义类资源的方式:
如果我尝试注入实体管理器,为什么会出现此错误?
编辑: 应@LightGuard 的要求,我正在添加用于引用注释的包:
WeatherDataBean具有:
/li>资源有:
/li>
jpa - 调用 utx.begin() 时 UserTransaction 失败抛出“java.lang.IllegalStateException:不允许操作”
我想使用 ejb 和 jpa 控制器,在 netbeans 中自动生成控制器...我尝试从类 (UniversidadServiceEJB) 调用 jpa 控制器,这是一个无状态的会话 bean,我调试了项目并成功创建了 UserTransaction 和 EntityManagerFactory但是当在 jpa 控制器(UniversityJpaController)中调用方法 utx.begin 时会抛出这个异常:
java.lang.IllegalStateException:不允许操作。
在 com.sun.enterprise.transaction.UserTransactionImpl.checkUserTransactionMethodAccess(UserTransactionImpl.java:146) 在 com.sun.enterprise.transaction.UserTransactionImpl.begin(UserTransactionImpl.java:162) 在 controller.UniversidadJpaController.create(UniversidadJpaController.java:47) ) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke( DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:601) 在 org.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1052) 在 org.glassfish.ejb .security.application.EJBSecurityManager。在 com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:619) 在 com.sun.ejb 在 com.sun.ejb.containers.BaseContainer.invokeBeanMethod(BaseContainer.java:5388) 调用(EJBSecurityManager.java:1124) .containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:800) at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:571) at org.jboss.weld.ejb.SessionBeanInterceptor.aroundInvoke(SessionBeanInterceptor.java:49 ) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect。 Method.invoke(Method.java:601) 在 com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:861) 在 com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:571) 在 com.sun.ejb.containers 的 com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:800) .interceptors.SystemInterceptorProxy.doAround(SystemInterceptorProxy.java:162) 在 com.sun.ejb.containers.interceptors.SystemInterceptorProxy.aroundInvoke(SystemInterceptorProxy.java:144) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect .NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ... ... ...container.interceptors.SystemInterceptorProxy.doAround(SystemInterceptorProxy.java:162) 在 com.sun.ejb.containers.interceptors.SystemInterceptorProxy.aroundInvoke(SystemInterceptorProxy.java:144) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun。反射.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ... ... ...container.interceptors.SystemInterceptorProxy.doAround(SystemInterceptorProxy.java:162) 在 com.sun.ejb.containers.interceptors.SystemInterceptorProxy.aroundInvoke(SystemInterceptorProxy.java:144) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun。反射.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ... ... ...调用(DelegatingMethodAccessorImpl.java:43) ... ... ...调用(DelegatingMethodAccessorImpl.java:43) ... ... ...
会话 Bean 类是:
jpacontroller 类是:
持久性单位是:
请问是什么问题?..非常感谢...
jakarta-ee - Java EE 应用程序架构中的单例与无状态 bean
我项目核心的部分业务逻辑必须对链接数据执行搜索。目前,我已经使用像这样的单例会话 bean 实现了这部分(SPARQL 是 RDF 模型上的一种查询语言,它是使用链接数据构建的)。
这个 EJB 由另一个名为 EJB 的 EJB 暴露给我的应用程序的其他部分,该 EJBSparqlEndpoint
负责将 EJB 转换ResultSet
为更舒适的SearchResult
对象,该对象包含字符串形式的模型,其语法由客户端指定,结果总数和其他元数据。SparqlEndpoint
EJB 很简单,@Stateless
并且具有客户端使用的本地接口。这些客户端包括 JSF 托管 bean 和几个将其公开为 SOAP 和 RESTful Web 服务的 EJB。
这是我想到的最合理的架构,但我需要知道我是否做得对。我应该像现在这样使用Singleton
bean 来实现核心,还是Stateless
会话 bean 更合适?数据库连接初始化通常至少需要几秒钟,注意它可能比它是 NoSQL 并且不支持事务更有用。我不打算向这个 bean 添加诸如 write 方法之类的任何东西。其他 EJB 是无状态的是否正确?如果我想将我的索引引擎(在数据库上执行写入)公开为另一个 EJB,我应该如何实现它?
提前致谢。
weblogic - Weblogic + Stateless Local Bean + DataSource 注入错误
我有一个这样的无状态本地 Bean:
所以,当我使用这个bean时,我得到了以下异常:
重要的:
我从一个 Web 服务(在同一个 EAR)中使用这个 EJB,比如:
而且,如果我尝试在 Webservice 的类上获取数据源,它会成功运行。
编辑:
另一个考虑因素:使用 REMOTE 接口它可以工作。但我想将它与本地接口一起使用。
我正在使用 Weblogic 10.3.5。我的数据源在其他应用程序(直接通过 JNDI 获取)中创建并运行良好,那么,我得到这个错误是什么?
java - 在无状态 EJB 计时器中正确使用实例变量
我知道在无状态会话 bean 中使用实例变量是一个流行的讨论主题,并且已经阅读了其中的一些,但我从这个主题中特别需要的是我的应用程序的实际正确设计。
我的企业应用程序由几个无状态 bean 组成,它们触发特定事件。在此类事件中,我希望同时触发几个计时器并跟踪某些事情(例如,插入数据库中的新数据,特定于原始事件)。
但是,当我对手动调用多个计时器进行小测试时,使用不同的间隔、eventID 和 serverIP,我没有得到所有计时器的预期行为(其中一些从未超时,等等)。
上述来源是否适合所需的用途,或者我应该以不同的方式设计/实施它?如果是,您能否建议一些选择?
jakarta-ee - 在条件下在无状态 SessionBean 中注入特定的 EntityManager
我目前正在处理调用无状态会话 Bean 以与数据库交互的 Web 应用程序。我的问题是关于这样的应用程序如何调用相同的会话 bean,以便后者可以选择必须使用哪个实体管理器来访问数据库。
目前我管理这种情况,启动不同的 Jboss 实例,监听不同的端口,并且在每个实例中我部署了相同的会话 Bean 池,并且一个或多个 Web 应用程序必须处理相同的数据库。换句话说,每个 Jboss 实例都包含一定数量的 Web 应用程序、一个持久性单元(persistence.xml in META-INF jar containing the @Entity's)
和会话 bean 池,它们都在一个耳朵内。主要弱点在哪里是不言而喻的:我需要处理更多不同的数据库,我必须维护尽可能多的 Jboss 实例,它主要是不可持续的,但不仅是因为资源原因。
我的最后一个问题是:部署不同的 Web 应用程序调用会话 bean 的最佳实践是什么,这些会话 bean 仅对注入其中的 EntityManager 有所不同?
提前致谢
stfn
caching - 在 EJB 3.0 中缓存对象
我应该使用哪种编程模式(和产品)在 EJB 3.0 无状态会话 bean 中创建通用内存对象缓存?
如果不要求缓存是连贯的,那么在集群环境中使用静态成员变量或单例模式是否会导致任何副作用?
要缓存的数据是从 JDBC 数据源(JPA 不是一个选项)和 Web 服务中获取的。要缓存的数据量为几兆字节。缓存必须提供非常快速的读取,因此我希望解决方案应该在应用程序正在使用的 JVM 内运行。
java - 脱离上下文调用的无状态会话 bean 缺少 EntityManager
我是 Java EE 的新手,所以我的问题可能非常基本。我使用无状态会话 bean(简化)构建了以下 REST Web 服务:
它就像魅力一样。它可以通过 URL 访问并返回 JSON。问题是我有另一部分用纯 Java 编写的程序需要使用这个 Session bean 作为某种模型来获取所有 Compound。
问题是当我在某个地方初始化这个 Session bean 时,它在持久性上下文之外,因此不知道 EntityManager 来访问数据库。我相信。
我不知道该怎么办。我可以在代码的远处初始化类 ListResource 并让 EntityManager 的依赖注入工作吗?或者以某种方式获取持久性上下文,然后初始化这个会话 bean?
我希望这是有道理的。我要描述它的复杂问题。
java - JNDI 查找 - 它在我的应用程序中是正确的方式吗?
我正在用 Java 编写一个应用程序,并且那里有一些 REST Web 服务。我的应用程序具有以下结构:http ://cl.ly/L7Pv/o
REST Web 服务类是无状态会话 bean。它就像魅力一样。但是图片上红色的类也想使用该 REST 资源。
据我所知,我不能在那里使用依赖注入和注释@EJB。我相信我必须使用 JNDI 查找。文档:http ://docs.oracle.com/javaee/6/tutorial/doc/gipjf.html
但是现在我不知道如何编写这个 JNDI 查找。我试过这两个:
我究竟做错了什么?首先,这是一个正确的方法吗?
谢谢
jakarta-ee - Service facades, detached entities and eager fetching
Service facades are usually implemented as stateless session beans, which means that any entities they possibly return will be detached immediately. This makes me think that any entity returned as a result of a service facade business method should eagerly fetch all of its internals, as in the absence of eager fetching, its internals cannot be accessed by service clients. I want to know whether I'm right on this and whether there is possibly any other way which may be more appropriate in certain circumstances.
Thank you