2012-01-04 43 views
0

我對我的英語道歉。Misterious調用遠程EJB3上的WAS 7

我在嘗試使用EJB 3技術。我有兩個應用程序,其中一個是Web應用程序,另一個是使用EJB 3.0的遠程EJB應用程序。我將它們部署在同一臺服務器Websphere 7中,並且它們會成功啓動。我的測試是通過@EJB註釋和「查找」來調用EJB,然後,Web應用程序通過@EJB註釋在EJB上引用一個Servlet,並在遠程接口處提供其他引用,即:

view plaincopy to clipboardprint?

import org.icabanas.pruebaconcepto.dominio.Producto; 
import org.icabanas.pruebaconcepto.facade.ProductoSessionFacade; 

public class ProductoServlet extends HttpServlet { 

    @EJB(name="EJB/ProductoSessionFacade") 
    private ProductoSessionFacade productoSessionFacade; 

    private ProductoSessionFacade productoSessionFacadeJndi;  

     protected void doPost(HttpServletRequest req, HttpServletResponse resp) 
      throws ServletException, IOException { 
     Producto producto = getProductoFromRequest(req); 

     try{ 
      System.out.println("INJECTION"); 
      productoSessionFacade.alta(producto); 
     } 
     catch (Exception e) { 
      System.out.println("Error in INJECTION"); 
      System.out.println(e.getMessage()); 
     } 

     try{ 
      System.out.println("JNDI");   
      productoSessionFacadeJndi = (ProductoSessionFacade) lookupJNDI("org.icabanas.pruebaconcepto.facade.ProductoSessionFacade"); 
      productoSessionFacadeJndi.alta(producto); 
     } 
     catch (Exception e) { 
      System.out.println("Error in JNDI"); 
      System.out.println(e.getMessage()); 
     } 
    } 
....... 
} 

我有以下問題:當我開始一切工作正常的應用程序,我得到的EJB annoted並通過JNDI查找,但是當我重新啓動或重新發布包含Web應用程序的耳朵,我得到的EJB annonted和它工作正常,但是當我試圖讓JNDI查找EJB的我得到以下錯誤:

「org.icabanas.pruebaconcepto.facade._ProductoSessionFacade_Stub不符合org.icabanas.pruebaconcepto.facade.ProductoSessionFacade」

關於發生什麼的任何想法?

感謝先進!

+0

請包含異常堆棧跟蹤。看起來您錯過了對PortableRemoteObject.narrow的調用,但是您或服務器是否忘記了這一點並不清楚。 – 2012-01-04 14:45:52

回答

0

這實際上是一個在WebSphere 7.0中的錯誤,我認爲它在7.0.0.17中已修復。我與7.0.0.15有同樣的問題。解決方法是重新啓動包含EJB的應用程序。