我的SFSB Seam组件在部署时绑定到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
没有绑定到任何地方。所以我想我的问题现在变成了,为什么Seam不将此SFSB添加到JNDI? 最佳答案
为什么Seam不将此SFSB添加到JNDI?
好,
如您的问题所示,我认为您有一个耳部应用程序,因为它的JNDI全球地址
purecharger/ExampleAction/local
根据
<EAR_APPLICATION>/<STATEFUL_BEAN>/local
当您部署单个EJB模块时,其在JBoss中的JNDI全局地址看起来像
<STATEFUL_BEAN>/local
因为您有一个耳朵应用程序,所以每个EJB模块都应在application.xml(描述您的耳朵的文件)中声明,如下所示
所以你的耳朵应用看起来像
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:组件安装在JNDI中,访问该组件时显示Not Bound,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2389596/