There is no way to refresh compiled classes loaded via the TomCat .\classes folder, that I'm aware of, other than to restart TomCat itself.
I think it would be possible if the classes were loaded via the .\webapps\soap\WEB-INF\classes, but that's not how Apache-SOAP seems to work... Please someone tell me I'm wrong <g> Note: I'm using TOMCAT v3.2.1, later versions may work differently. > -----Original Message----- > From: Chris Orloff [mailto:[EMAIL PROTECTED]] > Sent: Tuesday, November 27, 2001 5:05 PM > To: [EMAIL PROTECTED] > Subject: Re: Empty Vector Returned > > > Chris, > > Thanks for the reply. I discovered what the problem was. You were > right. The > vector was being returned empty. I was populating it from a > database. My SQL > statement was incorrect. I fixed it and recompiled the service. However, I > kept getting an empty vector. When I restarted Apache and Tomcat, my > recompiled service was loaded and it worked. Does SOAP cache classes? Is > there a way to refresh? Thanks again. > > Chris > > ---------- > From: "Chris Means" <[EMAIL PROTECTED]> > To: <[EMAIL PROTECTED]> > Subject: RE: Empty Vector Returned > Date: Tue, Nov 27, 2001, 7:37 AM > > > Chris, > > I agree, it looks like it's working fine, you'd likely get an > error message > if something wasn't actually working syntactically. > > I'd guess that getAllEmployees just doesn't have any data to return. > > Try modifying the server endpoint for that routine and hardcode in some > Employee objects into the returned Vector. If you still don't > get any data, > then there's likely a mapping problem...but from the looks of it, however > you're populating the return Vector probably just doesn't have any data to > fill it with. > > Can you show us how you're populating the Vector? > > -Chris > -----Original Message----- > From: Chris Orloff [mailto:[EMAIL PROTECTED]] > Sent: Tuesday, November 27, 2001 1:28 AM > To: [EMAIL PROTECTED] > Subject: Empty Vector Returned > > Hi, > > I have two services, both return vectors of objects. The first, called > getAllDepartments(), returns Department objects. The second > getAllEmployees() returns Employee objects. Both Department and > Employee are > very simple classes, containing private data and get and set methods. > > When I call getAllDepartment(), the return message is: > > HTTP/1.0 200 OK > Content-Type: text/xml; charset=utf-8 > Content-Length: 798 > Set-Cookie2: JSESSIONID=lshg4z3g81;Version=1;Discard;Path="/soap" > Set-Cookie: JSESSIONID=lshg4z3g81;Path=/soap > Servlet-Engine: Tomcat Web Server/3.2.3 (JSP 1.1; Servlet 2.2; Java 1.2.2; > Windows 95 4.10 x86; java.vendor=Sun Microsystems Inc.) > > <?xml version='1.0' encoding='UTF-8'?> > <SOAP-ENV:Envelope > xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" > xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" > xmlns:xsd="http://www.w3.org/1999/XMLSchema"> > <SOAP-ENV:Body> > <ns1:getAllDepartmentsResponse xmlns:ns1="urn:Personnel" > SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> > <return xmlns:ns2="http://xml.apache.org/xml-soap" xsi:type="ns2:Vector"> > <item xsi:type="ns1:com.transync.data.Department"> > <ID xsi:type="xsd:int">1</ID> > <name xsi:type="xsd:string">Marketing</name> > </item> > <item xsi:type="ns1:com.transync.data.Department"> > <ID xsi:type="xsd:int">2</ID> > <name xsi:type="xsd:string">Finance</name> > </item> > </return> > </ns1:getAllDepartmentsResponse> > </SOAP-ENV:Body> > </SOAP-ENV:Envelope> > > This is perfect, great, just what I want. However, when I call > getAllEmployees(), I get this message: > > HTTP/1.0 200 OK > Content-Type: text/xml; charset=utf-8 > Content-Length: 520 > Set-Cookie2: JSESSIONID=6awmcg3jz1;Version=1;Discard;Path="/soap" > Set-Cookie: JSESSIONID=6awmcg3jz1;Path=/soap > Servlet-Engine: Tomcat Web Server/3.2.3 (JSP 1.1; Servlet 2.2; Java 1.2.2; > Windows 95 4.10 x86; java.vendor=Sun Microsystems Inc.) > > <?xml version='1.0' encoding='UTF-8'?> > <SOAP-ENV:Envelope > xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" > xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" > xmlns:xsd="http://www.w3.org/1999/XMLSchema"> > <SOAP-ENV:Body> > <ns1:getAllEmployeesResponse xmlns:ns1="urn:Personnel" > SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> > <return xmlns:ns2="http://xml.apache.org/xml-soap" xsi:type="ns2:Vector"> > </return> > </ns1:getAllEmployeesResponse> > </SOAP-ENV:Body> > </SOAP-ENV:Envelope> > > It's empty. I wrote a test driver for my service to make sure it is > returning something, and it is. Here's the mapping code in the client: > > SOAPMappingRegistry smr = new SOAPMappingRegistry(); > BeanSerializer beanSer = new BeanSerializer(); > > smr.mapTypes(Constants.NS_URI_SOAP_ENC, > new QName("urn:Personnel", "com.transync.data.Employee"), > com.transync.data.Employee.class, beanSer, beanSer); > > smr.mapTypes(Constants.NS_URI_SOAP_ENC, > new QName("urn:Personnel", > "com.transync.data.Department"), > com.transync.data.Department.class, beanSer, beanSer); > > And here's the mapping in DeploymentDescriptor.xml: > > <isd:mappings> > <isd:map encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" > xmlns:x="urn:Personnel" > qname="x:com.transync.data.Employee" > javaType="com.transync.data.Employee" > > java2XMLClassName="org.apache.soap.encoding.soapenc.BeanSerializer" > > xml2JavaClassName="org.apache.soap.encoding.soapenc.BeanSerializer"/> > <isd:map encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" > xmlns:x="urn:Personnel" > qname="x:com.transync.data.Department" > javaType="com.transync.data.Department" > > java2XMLClassName="org.apache.soap.encoding.soapenc.BeanSerializer" > > xml2JavaClassName="org.apache.soap.encoding.soapenc.BeanSerializer"/> > </isd:mappings> > > Any ideas on why these two very similar objects are behaving differently > would be very welcome. > > Thanks, > Chris >
