gpt4 book ai didi

java - JBoss Seam : component installed in JNDI, 组件访问说未绑定(bind)

转载 作者:行者123 更新时间:2023-11-30 11:59:44 25 4
gpt4 key购买 nike

我的 SFSB Seam 组件在部署时绑定(bind)到 JNDI,如下日志消息所示:

Component: example, scope: CONVERSATION, type: STATEFUL_SESSION_BEAN,
class:com.purecharger.action.ExampleAction, JNDI: purecharger/ExampleAction/local

我的界面:

@Local
public interface Example {
public List<String> getExample();
public void destroy();
}

和我的实现:

@Stateful
@Scope(ScopeType.CONVERSATION)
@Name("example")
@Restrict("#{identity.loggedIn}")
public class ExampleAction implements Example, Serializable {

....
}

但是,当我访问 xhtml 页面中的 voting 组件时,出现以下错误:

javax.el.ELException: /home.xhtml: Could not instantiate Seam component: example
....
Caused by: javax.naming.NameNotFoundException: ExampleAction not bound

如果 Seam 足够聪明,可以使用 components.xml (purecharger/#{ejbName}/local) 中的 JNDI 模式安装我的组件,为什么它在查找组件时不应用该模式?

谢谢。

更新:查看 JBoss 中的 JNDIView,名称 purecharger/ExampleAction/local 未在任何地方绑定(bind)。所以我想我的问题现在变成了,为什么 Seam 没有将这个 SFSB 添加到 JNDI?

最佳答案

Why is Seam not adding this SFSB to JNDI ?

嗯,

如您的问题所示,我认为您有一个 ear 应用程序,因为它的 JNDI 全局地址

purecharger/ExampleAction/local

根据

映射
<EAR_APPLICATION>/<STATEFUL_BEAN>/local

当您部署单个 EJB 模块时,它在 JBoss 中的 JNDI 全局地址看起来像

<STATEFUL_BEAN>/local

因为您有一个 ear 应用程序,每个 EJB 模块都应该在 application.xml 中声明(描述您的 ear 的文件)如下

所以你的耳朵应用看起来像

pureCharger.ear

META-INF
application.xml
pureCharger-ejb.jar
pureCharger-war.war
jboss-seam.jar
lib
// libraries shared by your modules goes here

还有你的 application.xml

<?xml version="1.0" encoding="UTF-8"?>
<application version="5" 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/application_5.xsd">
<display-name>pureCharger</display-name>
<module>
<ejb>pureCharger-ejb.jar</ejb>
</module>
<module>
<ejb>jboss-seam.jar</ejb>
</module>
<module>
<web>
<web-uri>pureCharger-war.war</web-uri>
<context-root>pureCharger</context-root>
</web>
</module>
</application>

注意 jboss-seam.jar 是一个 EJB 模块,所以它也应该在 application.xml 文件中声明

如果可能,请使用 Seam-gen 生成您的项目。它负责包括您的项目所需的所有库,并且可以在 NetBeans 中不受限制地打开,例如。

问候,

关于java - JBoss Seam : component installed in JNDI, 组件访问说未绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2389596/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com