owenb 2002/12/16 03:27:59 Modified: java/src/org/apache/wsif/providers/ejb WSIFPort_EJB.java Log: Fix - if className is used in the ejb:address, make use of the PortableRemoteObject.narrow method on the EJBHome returned by the JNDI lookup Revision Changes Path 1.10 +23 -1 xml-axis-wsif/java/src/org/apache/wsif/providers/ejb/WSIFPort_EJB.java Index: WSIFPort_EJB.java =================================================================== RCS file: /home/cvs/xml-axis-wsif/java/src/org/apache/wsif/providers/ejb/WSIFPort_EJB.java,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- WSIFPort_EJB.java 7 Dec 2002 12:34:02 -0000 1.9 +++ WSIFPort_EJB.java 16 Dec 2002 11:27:59 -0000 1.10 @@ -66,6 +66,7 @@ import javax.ejb.EJBHome; import javax.ejb.EJBObject; import javax.naming.InitialContext; +import javax.rmi.PortableRemoteObject; import javax.wsdl.BindingOperation; import javax.wsdl.Definition; import javax.wsdl.Port; @@ -177,7 +178,28 @@ InitialContext initContext; initContext = new InitialContext(hash); - fieldEjbHome = (EJBHome) initContext.lookup(address.getJndiName()); + + Class homeClass = null; + try { + if (address.getClassName() != null) { + homeClass = + Class.forName( + address.getClassName(), + true, + Thread.currentThread().getContextClassLoader()); + if (!(EJBHome.class.isAssignableFrom(homeClass))) { + homeClass = null; + } + } + } catch (ClassNotFoundException cnf) { + Trc.ignoredException(cnf); + } + + if (homeClass != null) { + fieldEjbHome = (EJBHome) PortableRemoteObject.narrow(initContext.lookup(address.getJndiName()),homeClass); + } else { + fieldEjbHome = (EJBHome) initContext.lookup(address.getJndiName()); + } } catch (Exception ex) { Trc.exception(ex);