Scott: It worked ok. Thanks a lot. I use Tomcat and I would like to ask you another thing.
My Service dinamically invokes some other Services (as I told you :-) ), so I get the URL of each of the Services dinamically (from my Database) that I am going to call and send them some information. The question is: I want to test my application and, Is it possible tu run in the same machine 2 Tomcats ? If it is possible I could invoke each of those services just changing the URL. For example: I invoked the Listener over SOAP but this service is using the same URL as my Service: http://localhost:8080/soap/servlet/rpcrouter Can I deploy another instance of Tomcat at the same time using a different port number ? for example: http://localhost:8010/soap/servlet/rpcrouter Where Should I do ? Where Do I set the port number up ? Thank you very much !!! Max On Mon, 2 Feb 2004 10:32:22 -0500, "Scott Nichol" <[EMAIL PROTECTED]> said: > How have you deployed Apache SOAP in your J2EE container? Is it a > webapp? It should be. With Tomcat, for example, you would probably have > a directory > > $CATALINA_HOME/webapps/soap > > for the webapp. All of the Apache SOAP classes would be in > > $CATALINA_HOME/webapps/soap/WEB-INF/classes > > Your service code should be deployed to that same directory (and its > sub-directories to match your package declarations). In your case, > because you use Apache SOAP classes in your service, this is your only > deployment option (on Tomcat, at least; I don't think you have ever said > which container you are using). For services that do not use Apache SOAP > classes, another option (although definitely *not* recommended) is to put > the service classes in $CATALINA_HOME/shared/classes. > > Scott Nichol > > Do not send e-mail directly to this e-mail address, > because it is filtered to accept only mail from > specific mail lists. > ----- Original Message ----- > From: "Maximiliano Barone" <[EMAIL PROTECTED]> > To: <[EMAIL PROTECTED]> > Sent: Saturday, January 31, 2004 4:30 PM > Subject: Re: Server-Side as a Client of other Web Service > > > Scott: > > Thank you very much for your answers. > When my service dinamically tries to send the request (invoking) to other > Web Services, it fails because it doesn´t find none of the following > classes: > > - Constants > - Parameter > - Fault > - Call > - Response > > All of these classes belongs to org.apache.soap.rpc.* > When I compile this in my IDE Java it works well, but when it is running > in the Apache SOAP Server context (Server Side) it fails. > I read the article that you told me about the classloaders, but what > classes should I put in one of those directories ? > > Thanks. > > Max > > > On Fri, 30 Jan 2004 11:25:59 -0500, "Scott Nichol" > <[EMAIL PROTECTED]> said: > > > 3) Could you please tell me how I can put the classes in the class loader > > > of the server ? > > > > Since you are making the Call from code that is running in the context of > > an Apache SOAP service, the classes *should* be available, and the > > instantiation of Call should work. > > > > The exact set of classes available through class loaders depends on the > > J2EE container you are using. With Tomcat, for example, the class > > loaders are documented (for version 4.1) at > > http://jakarta.apache.org/tomcat/tomcat-4.1-doc/class-loader-howto.html. > > > > For Apache SOAP services deployed in Tomcat, the classes are under the > > WEB-INF/classes directory for the soap webapp. If that webapp was > > deployed the "simplest" way, the full path to the classes is > > $CATALINA_HOME/webapps/soap/WEB-INF/classes. > > > > > I will explain you this interaction: > > > > > > 1) A client sends some info (over Apache SOAP) to my Service. (OK) > > > 2) My Service receives this call and saves the data internally. (OK) > > > 3) My Service builds a new DOM Element and sends it to other services. > > > (ERROR !) > > > > > > I can't see the ERROR of this third step because the Client (step 1) uses > > > a servlet to invoke my > > > Service and it internally invokes the other services. I know that my code > > > is not working well because I comment that line of the > > > new Call ("Call call = new Call();") and it works (without calling the > > > services, of course). > > > How can I see that error ? > > > > If your service code does nothing to trap an exception, an exception > > thrown in the instantiation of Call will trace back on the stack into > > Apache SOAP code (within RPCRouterServlet, I believe) that will catch it > > and package it into a SOAP Fault that is returned to the client. A > > common client coding practice is to check for a Fault and display its > > contents, which would have the info. > > > > Further, the J2EE container will sometimes log Java exceptions, depending > > on the container and possibly the configuration of the container. > > > > Scott Nichol > > > > Do not send e-mail directly to this e-mail address, > > because it is filtered to accept only mail from > > specific mail lists. > > > > > > Thanks > > > > > > Maxi > > > > > > > > > > > > > > > On Fri, 30 Jan 2004 10:04:59 -0500, "Scott Nichol" > > > <[EMAIL PROTECTED]> said: > > > > Max: I am sending this directly to you as well as the list because my > > > > e-mails to the list are not showing up. > > > > > > > > I have a number of comments. > > > > > > > > 1. You do not need to register anything to [de-]serialize a Vector. In > > > > fact, the BeanSerializer may do things you do not want it to do. > > > > > > > > 2. Constants.NS_URI_LITERAL_XML is *not* the same as WSDL > > > > document/literal. It is a custom encoding supported by Apache SOAP. It > > > > will not allow you to use BeanSerializer, etc. It only works with > > > > parameters that are DOM Element. > > > > > > > > 3. What error do you get when you try to instantiate a Call? You should > > > > be able to do this if you have the classes available in a class loader > > > > available to the server. > > > > > > > > Scott Nichol > > > > > > > > Do not send e-mail directly to this e-mail address, > > > > because it is filtered to accept only mail from > > > > specific mail lists. > > > > ----- Original Message ----- > > > > From: "Maximiliano Barone" <[EMAIL PROTECTED]> > > > > To: <[EMAIL PROTECTED]> > > > > Sent: Friday, January 30, 2004 9:51 AM > > > > Subject: Server-Side as a Client of other Web Service > > > > > > > > > > > > > Hi ! I am developing a Service that receives a call from a Client over > > > > > Apache SOAP like this: > > > > > > > > > > CLIENT: > > > > > > > > > > // Mapping registry > > > > > SOAPMappingRegistry smr = new > > > > > SOAPMappingRegistry(); > > > > > BeanSerializer beanSer = new BeanSerializer (); > > > > > > > > > > smr.mapTypes(Constants.NS_URI_SOAP_ENC, new QName("urn:UpdateUsrWS", > > > > > "UpdateUsr"), Vector.class, beanSer, beanSer); > > > > > > > > > > // Build the call. > > > > > Call call = new Call(); > > > > > call.setTargetObjectURI("urn:UpdateUsrWS"); > > > > > call.setMethodName("main"); > > > > > call.setEncodingStyleURI(Constants.NS_URI_LITERAL_XML); > > > > > > > > > > > > > > > The Server Side (MyService: UpdateUsrWS) receives some information from > > > > > the Client and invokes other Services over Apache SOAP too, so my Service > > > > > (Server-Side) acts as a client too. > > > > > The problem is that I am trying to create a new Call from my class and it > > > > > doesn't work. > > > > > > > > > > > > > > > SERVER (As a Client of other Web Services) > > > > > > > > > > Call call = new Call(); > > > > > > > > > > Do you know if the SOAP Server supports this ? > > > > > Any suggestion ? > > > > > > > > > > Thank you. > > > > > > > > > > Max > > > > > > > > > > > > > > > > > > > > -- > > > > > http://www.fastmail.fm - Sent 0.000002 seconds ago > > > > > > > > > > > -- > > > http://www.fastmail.fm - Choose from over 50 domains or use your own > > > > > -- > http://www.fastmail.fm - Or how I learned to stop worrying and > love email again > -- http://www.fastmail.fm - Consolidate POP email and Hotmail in one place