Hi: In soap deployment description, use the following tag to provide the soap end point.
see the following example: <isd:service id="urn:ParnetBean" xmlns:isd="http://xml.apache.org/xml-soap/deployment"> <isd:provider methods="create" scope="Application" type="org.apache.soap.providers.StatelessEJBProvider"> <isd:java class="com.mtrilogix.ejbtest.ParentHome"></isd:java> <isd:option key="JNDIName" value="com.mtrilogix.ejbtest.ParentHome"></isd:option> <isd:option key="FullHomeInterfaceName" value="com.mtrilogix.ejbtest.ParentHome"></isd:option> <isd:option key="ContextProviderURL" value="t3://localhost:7001"></isd:option> <isd:option key="FullContextFactoryName" value="weblogic.jndi.WLInitialContextFactory"></isd:option> </isd:provider> <isd:mappings></isd:mappings> <isd:faultListener>org.apache.soap.server.DOMFaultListener</isd:faultListene r> Virender Sandhu ----- Original Message ----- From: "Darius Cooper" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Monday, April 08, 2002 2:10 PM Subject: Re: SOAP->EJB example/problem -- Many questions > Jonathan > > It is curious that the error message you get says "iiop://localhost:900", > when it ought to say "ormi://duke1.d51.lilly.com:8088/catd" > > >From the message, it is almost certain that the point of failure is the > locate() method of the StatelessEJBProvider. > > The snippet of code in the locate() method is: > > public void locate(DeploymentDescriptor dd, > Envelope env, > Call call, > String methodName, > String targetObjectURI, > SOAPContext reqContext) > throws org.apache.soap.SOAPException { > > HttpServlet servlet = (HttpServlet) reqContext.getProperty( > Constants.BAG_HTTPSERVLET ); > HttpSession session = (HttpSession) reqContext.getProperty( > Constants.BAG_HTTPSESSION ); > > System.err.println( "=============================================" ); > System.err.println( "In TemplateProvider.locate()" ); > System.err.println( "URI: " + targetObjectURI ); > System.err.println( "DD.ServiceClass: " + dd.getServiceClass() ); > System.err.println( "DD.ProviderClass: " + dd.getProviderClass() ); > System.err.println( "Call.MethodName: " + call.getMethodName() ); > > this.dd = dd ; > this.envelope = env ; > this.call = call ; > this.methodName = methodName ; > this.targetObjectURI = targetObjectURI ; > this.servlet = servlet ; > this.session = session ; > > Hashtable props = dd.getProps(); > > > String ContxtProviderURL = (String) props.get("ContextProviderURL"); > String ContxtFactoryName = (String) props.get("FullContextFactoryName"); > > if ((ContxtProviderURL != null) && (ContxtFactoryName != null)) > initialize(ContxtProviderURL, ContxtFactoryName); > else > initialize(); > > etc. > > > For some reason, the test ((ContxtProviderURL != null) && (ContxtFactoryName > != null)) seems to be failing. > > Your deployment descriptor looks fine... but that it the place I would > re-check. > > Regards, > > - Darius Cooper > > > > > > ----- Original Message ----- > From: [EMAIL PROTECTED] > To: [EMAIL PROTECTED] > Sent: Sunday, April 07, 2002 1:06 PM > Subject: Re: SOAP->EJB example/problem -- Many questions > > > > My EJB is deploying. I wrote a jsp to bring it up so it is deploying in the > app. > > > Jonathan Bricker > Lilly Research Labs > Java ATG > > > Brian BBA41 Bannister <[EMAIL PROTECTED]> > 04/02/02 07:31 PM > Please respond to soap-user > > To: [EMAIL PROTECTED] > cc: > Subject: Re: SOAP->EJB example/problem -- Many questions > > > > > > Sounds obvious, but are you sure that you are deploying your EJB? I would > write a test harness in Java that runs on your application server to check > that. It looks to me like you can't call the EJB at all, either through EJB > deployment, or maybe you've got your JNDI properties set up incorrectly. > > > > > BRICKER_JONATHAN_ > [EMAIL PROTECTED] To: > [EMAIL PROTECTED] > cc: > 03/04/2002 03:26 Subject: SOAP->EJB > example/problem -- Many questions > Please respond to > soap-user > > > > > > > > > Hello, > > I'm new to SOAP and was trying to tackle setting up a SOAP service to a > Stateless Session Bean. I have a simple method to test this out that takes > 2 strings and returns a Boolean. When I run my test client I get the > following error: > > In TemplateProvider.locate() > URI: urn:CanDEDataMgr > DD.ServiceClass: org.apache.soap.providers.StatelessEJBProvider > DD.ProviderClass: null > Call.MethodName: isUserValid > Naming Exception caught during InitialContext creation @ > iiop://localhost:900 > Ouch, the call failed: > Fault Code = SOAP-ENV:Server > Fault String = Unable to initialize context > > > First question: What does this mean. The next is realted to the first, do > I have to change the localhost:900 to match my servers port that the > service will be running from? If so where do I change it( a small example > would be great). > > Here is my deployment descriptor for the service: > > <isd:service xmlns:isd="http://xml.apache.org/xml-soap/deployment" id > ="urn:CanDEDataMgr"> > <isd:provider type="org.apache.soap.providers.StatelessEJBProvider" scope > ="Application" methods="create isUserValid"> > <isd:option key="JNDIName" value="java:comp/env/ejb/CanDEDataMgr" /> > <isd:option key="FullHomeInterfaceName" value > ="com.lilly.javaatg.catd.ejb.CanDEDataMgrHome"/> > <isd:option key="ContextProviderURL" value > ="ormi://duke1.d51.lilly.com:8088/catd"/> > <isd:option key="FullContextFactoryName" value > ="com.evermain.server.ApplicationInitialContextFactory"/> > </isd:provider> > > <isd:faultListener>org.apache.soap.server.DOMFaultListener</isd:faultListene > r> > > </isd:service> > > On the methods...Do I have to call the create method? I expose it as per > some examples but do not call it as per the examples. > > And my test code: > > URL url = new URL("http://foo.bar.lilly.com:8088/soap/servlet/rpcrouter"); > // Build the call. > Call call = new Call (); > call.setTargetObjectURI ("urn:CanDEDataMgr"); > call.setMethodName ("isUserValid"); > Vector params = new Vector (); > params.addElement (new Parameter("userID", String.class, userID, > Constants.NS_URI_SOAP_ENC)); > params.addElement (new Parameter("password", String.class, password, > Constants.NS_URI_SOAP_ENC)); > call.setParams (params); > > // make the call: note that the action URI is empty because the > // XML-SOAP rpc router does not need this. This may change in the > // future. > Response resp = call.invoke (/* router URL */ url, /* actionURI */ "" > ); > > // Check the response. > if (resp.generatedFault ()) { > Fault fault = resp.getFault (); > System.out.println ("Ouch, the call failed: "); > System.out.println (" Fault Code = " + fault.getFaultCode ()); > System.out.println (" Fault String = " + fault.getFaultString ()); > } else { > Parameter result = resp.getReturnValue (); > System.out.println ( "result ="+result.toString() ); > System.out.println ( "Done" ); > > And the method call in the SSB: > > public boolean isUserValid(String userID, String password) throws > CanDEException { > String encryptedPassword = null; > String userPasswd = null; > try { > UserVO user = getUser(userID); > encryptedPassword = pesEncrypt(null, password); > userPasswd = user.getPassword(); > }catch( RemoteException rex) { > if(Log.isOn()) {Log.log("ejb.CanDEDataMgrBean", ".isUserValid > (): RemoteException on isUserValid", rex); } > throw new CanDEException("Error in > lisUserValid",rex); > } > if(userPasswd.equals(encryptedPassword)){ > return true; > } else { > return false; > } > } > > > > Jonathan Bricker > Lilly Research Labs > Java ATG > > > > > > Qantas > > >
