我有部署了企業應用程序A和B(在WLS 10.0中)。 A是「框架」,B是客戶端應用程序。 客戶端發出如下呼籲:需要幫助瞭解JNDI和J2EE中的特定ClassCastException
Object o = ctx.lookup(jndiName); // line 1
cf = (ConnectionFactory) o; // line 2
連接工廠是一個接口,定義爲:
public interface ConnectionFactory
extends java.io.Serializable, javax.resource.Referenceable {
...
}
什麼情況是:
- 如果包含接口類的罐子上系統類路徑,第2行執行正常
- 如果接口類不在系統類路徑上,但是包裝的機智h應用程序分開,第2行拋出ClassCastException(其中o是ConnectionFactoryImpl的信息文本)
爲什麼會這樣?我假設JNDI查找只返回一個存根到遠程對象(我是否正確?),那麼爲什麼接口類的類加載器是不同的呢?
這樣回答,我的期望:
- 是的,它應該發生,你體驗的方式,因爲...
- 不,應該不是,因爲如果出現這種情況了,然後...... ...,所以你的設置中有些東西是可疑的
- 你描述的情況非常奇怪,你確定你不會錯過某個地方的某個地方嗎?
- ... :)
這也將是很好,如果有人能闡明如何在JNDI和存根的工作,哪裏鑄造發生(在客戶端上的存根?還是原來的對象上遠端?)等。
感謝您的幫助!
感謝您的回答。令我困惑的是,Weblogic寫了關於EJB的內容,即應用程序間的EJB調用只能通過遠程接口進行。我知道這與EJB無關,但我推斷,請求駐留在其他應用程序中的JNDI對象會訴諸某種類似的遠程機制,這不應該是真的。 – ron 2010-01-28 08:58:15
這是正確的,是的。當在JNDI上發佈可遠程訪問的EJB時,它明確發佈存根。 – skaffman 2010-01-28 09:44:06