I am attempting to use Apache ver 2.2 SOAP to call a stateless EJB deployed
in JBOSS ver 2.2.2. The error I get back from Apache is:
Fault Code = SOAP-ENV:Server
Fault String = Error in connecting to EJB
The JBOSS log shows this:
[EmbeddedTomcatSX] In TemplateProvider.locate()
[EmbeddedTomcatSX] URI: urn:getAddressTypes
[EmbeddedTomcatSX] DD.ServiceClass:
org.apache.soap.providers.StatelessEJBProvider
[EmbeddedTomcatSX] DD.ProviderClass: null
[EmbeddedTomcatSX] Call.MethodName: getXML
[EmbeddedTomcatSX] Exception caught: javax.naming.CommunicationException
[Root exception is java.lang.ClassNot
FoundException: oneok.ocms.bll.getAddressTypesHome]
My client code is roughly:
URL urlRouter = new URL ("http://localhost:8080/soap/servlet/rpcrouter");
Call call = new Call ();
call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);
call.setTargetObjectURI ("urn:getAddressTypes");
call.setMethodName ("getXML");
Response resp = call.invoke(urlRouter, "");
My SOAP deployment descriptor is:
<?xml version="1.0"?>
<isd:service xmlns:isd="http://xml.apache.org/xml-soap/deployment"
id="urn:getAddressTypes">
<isd:provider type="org.apache.soap.providers.StatelessEJBProvider"
scope="Application"
methods="create">
<isd:option key="JNDIName" value="ejb/bll/getAddressTypes"/>
<isd:option key="FullHomeInterfaceName"
value="oneok.ocms.bll.getAddressTypesHome" />
<isd:option key="ContextProviderURL" value="jnp://localhost:1099" />
<isd:option key="FullContextFactoryName"
value="org.jnp.interfaces.NamingContextFactory" />
</isd:provider>
<isd:faultListener>org.apache.soap.server.DOMFaultListener</isd:faultListene
r>
</isd:service>
My EJB works with "traditional" java clients, just not with the SOAP client.
I haven't noticed any other problems with my Apache or JBOSS installations,
and yes, I do have the xerces.jar file listed first in my classpath...
I even tried adding the jar file for my EJB to the classpath, and
restarting, but that didn't help either!
Does anyone have any ideas?