我SFSB Seam組件被綁定到JNDI上的部署,通過這個日誌消息證明:JBoss 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 {
....
}
然而,當我訪問voting
組件在XH TML頁面就好了,我得到以下錯誤:
javax.el.ELException: /home.xhtml: Could not instantiate Seam component: example
....
Caused by: javax.naming.NameNotFoundException: ExampleAction not bound
如果接縫查找部件時很聰明用在components.xml的JNDI模式(purecharger/#{ejbName}/local
),它爲何不同樣適用的模式來安裝我的組件?
謝謝。
UPDATE: 綜觀關於JNDIView在JBoss中,這個名字purecharger/ExampleAction/local
不被任何約束。所以我想現在我的問題就變成了,爲什麼Seam不將這個SFSB添加到JNDI中?
謝謝亞瑟,這是問題所在。我不僅沒有在application.xml中聲明我的包含EJB的jar,我還試圖將它放在war/WEB-INF/lib中,這是不正確的(至少在EJB規範的v3.1之前)。 – purecharger 2010-03-08 03:59:33