owenb 2002/12/16 03:25:50
Modified: java/src/org/apache/wsif/providers/ejb Tag: pre1_2_0-patches
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
No revision
No revision
1.8.2.1 +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.8
retrieving revision 1.8.2.1
diff -u -r1.8 -r1.8.2.1
--- WSIFPort_EJB.java 24 Oct 2002 16:09:07 -0000 1.8
+++ WSIFPort_EJB.java 16 Dec 2002 11:25:49 -0000 1.8.2.1
@@ -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);