- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
由于各种原因,我需要手动查找 SessionContext。在JBoss5中,解决方案
InitialContext initialContext = new InitialContext();
SessionContext sessionContext = (SessionContext) initialContext.lookup("java:comp/EJBContext");
已经很好地服务于医学,但是从 JBoss 7 我反而得到了一个
javax.naming.NameNotFoundException: EJBContext -- service jboss.naming.context.java.global.EJBContext
在 JBoss 7.2 中查找上下文的方式是否发生了变化,或者我的部署是否缺少任何重要的东西?作为引用,标准注入(inject)工作正常,这是唯一失败的查找。还是我做错了什么(除了手动查找 SessionContext 之外)?
最佳答案
根据Java EJB的规范(这个是针对 EJB 3.2 的。但是 EJBContext
与之前的 EJB 3.x 相比没有任何变化),您可以注入(inject) EJBContext
使用注释 @Resource
进入您的组件或手动通过查找(第 11.15 节):
The container must make a component’s EJBContext interface available either through injectionusing the Resource annotation or in JNDI under the name java:comp/EJBContext
查找 EJB 资源的标准方法是通过 EJBContext.lookup
方法,但也有 JNDI 方式,如果您还没有 EJBContext
,这是唯一的可能性。 :
Context initCtx = new InitialContext();
EJBContext ejbCtx = (EJBContext) initCtx.lookup("java:comp/EJBContext");
这正是您所做的,所以有什么问题吗?有两件事,我不确定哪一件。首先,通过手动查找,有时需要在类级别将资源分配给带有注释的组件:
@Resource(name = "EJBContext", type = javax.ejb.EJBContext)
public class MyComponent {
...
}
但我不确定 EJBContext
是否需要它同样,我想不是。第二件事,更重要也更关键——再次根据规范:
EJBContext objects accessed through the naming environment are only valid within the beaninstance that performed the lookup.
这个是 11.15.1 节,下一个是 11.15.2 节:
The Container Provider is responsible for providing an appropriate EJBContext object to the refer-encing component. The object returned must be of the appropriate specific type for the bean requestinginjection or performing the lookup—that is, the Container Provider must return an instance of the SessionContext interface to referencing session beans and an instance of the MessageDrivenCon-text interface to message-driven beans.
这些都意味着注入(inject)和查找 EJBContext
仅在 Enterprise Java Beans 中有效,因此那些用 @MessageDriven
注释的, @Stateful
, @Singleton
或 @Stateless
(或在部署描述 rune 件中描述为 EJB,也称为 EJB 2.x 规范)。也许您的组件不是有效的 EJB,这就是查找不起作用的原因?这当然只是建议。
还有一种可能得到EJBContext
(更准确地说是 SessionContext
)。你的组件应该实现 SessionBean
界面有 setSessionContext(SessionContext sessionContext)
方法。每次使用组件时(在某处注入(inject),由客户端或超时调用,尤其是在创建组件时),EJB 容器都应调用此方法,并且应在该方法内分配 sessionContext
bean 字段的参数。
关于java - 在 JBoss 7.2 中查找 SessionContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22832640/
我是 JBoss 的新手,发现了很多不同的术语 - JBoss EAP、JBoss Server、Wildfly、Jboss Web,以及很多不是最新的或针对旧版本的文档。 我从哪里开始了解 JBos
JBoss ESB 服务器之间有什么区别(可在此处获得:http://jbossesb.jboss.org/downloads/) 和 JBoss fuse ( http://www.jboss.or
我在我的 PC 上安装了 JBoss 4 到目录 C:\JBoss4 并将环境变量 JBOSS_HOME 设置为此目录: JBOSS_HOME=C:\JBoss4 我需要在同一台 PC 上安装 JB
我有一个 JBoss 服务器正在运行并且想要部署一个服务。 该服务连接到在以下 xml 文件中配置的数据库 jdbc:postgresql://localhost:543
jboss 中的超时是如何工作的?网络应用程序如何知道何时重定向到登录页面? 只是为了澄清! -我知道如何在 jboss 上配置超时。我的问题是,Jboss 如何知道 session 已超时以及何时超
使用JBoss Forge启动新项目时,默认情况下该项目是使用Maven构建系统创建的。我如何利用Forge 2. *的Gradle插件使用Gradle而不是Maven创建项目? % forge Us
当前配置: 正在运行的16个Pod,基于JBoss TCP的集群以及google ping发现。容器作为状态集部署在Kubernetes集群上。 没有负载的初始群集按预期运行,没有任何单个问题,但是当
我以为这将是一个 JBoss 常见问题解答,但我找不到它。 我想同时运行 JBoss 4 和 JBoss 5。我通过将端口的前导数字更改为 9 手动更改了 JBoss 5 服务器/默认实例上的所有端口
我们在 JBoss AS 6 上实现了一些服务作为我们希望迁移到 JBoss AS 7 的单例服务。 这些服务在 jboss-service.xml 文件中声明,该文件位于 EJB 包中,类似于以下代
例如,如何确定我的简单 JBoss 4.2.3 服务器正在监听端口 8080? 这是我最接近的一次,但这不起作用: MBeanServerConnection server = (MBeanServe
我正在尝试找到从语法上确定我的程序是在 Jboss 5 还是 Jboss 7 (eap-6.1) 上运行的最佳方法。到目前为止,我找到的方法是特定于 jboss 5 或 jboss 7 的,这不起作用
我在域模式下使用 JBoss 6.4.8 版本。我想通过 CLI 添加这 4 个系统属性: 1- /host=myserver/server-config=node/system-property=j
在 JBoss 4 中,您可以在文件中设置对象的部署顺序( .jar 、 .war 、 .sar 等...): conf/xmdesc/org.jboss.deployment.MainDeploye
概括地说,JBoss 5 的关闭有什么作用?如果我只是杀死 java 进程而不是优雅地关闭 JBoss,可能会出现什么问题? 对于我的应用程序来说,正常的 JBoss 5 关闭大约需要 6 分钟,这个
我最近在 CentOS 6.7 服务器上安装了 JBoss AS 7。 jboss as 工作正常。为了测试,我部署了一个 .war 文件并对其进行了测试,效果很好!但现在我尝试从我的台式电脑访问相同
我有 jboss 应用程序。并想自动测试部署。并希望将此任务作为项目添加到 Hudson 我的愿景基于以下阶段: 将我的应用程序放到 JBoss(复制耳朵、配置、库等) 运行 JBoss 我有一台 L
我对 JBoss 很陌生。目前我有一个需求,我需要在 JBoss 上部署应用程序(已经在 Tomcat 上运行)。我下载了 JBoss,但是版本 7 中的目录结构不同。 我正在运行 bin\stand
我是 JBoss AS 7 的新手。我尝试在 JBoss AS 7 上部署我的 war 文件,这似乎工作正常。我的问题是在哪里可以看到部署的内容。 我希望它像 Tomcat 一样,它应该有一个探索的
我使用多播方法在两个不同的 JBoss 服务器之间配置了集群。 当我启动两个 JBoss 服务器时,两个服务器都将连接。 一天后,我收到以下消息 server.log 中的群集开始显示错误 05:28
为了打开/关闭我们产品的跟踪-“类别”或“记录器”标签,我们应该在jboss-log4j.xml中使用什么? 默认情况下,JBoss在jboss-log4j.xml中使用“类别”。 但据我所知,不赞成
我是一名优秀的程序员,十分优秀!