I had webservice working exactly as expected locally on our computers.. the client was able to access them, and received expected responses as well.
I then dropped off my .war file into webapps folder at a remote server. I was able to see the WSDL file. However, our client could not access the services because there seems to be some kind of server side error.
After a lot of struggling to no avail, I decided to return to basics.. I commented out everything in HotelImpl.java & HotelIF.java, and added 'public String sayHello(String s)' to both files.. the method simply returns "Hello"+s. That way, I would know the error is not related to business logic code or anything like that. I then uploaded the new .war file to replace my previous .war file.
This excrept was from the launcher.server.log file on the remote server:
java.lang.NoClassDefFoundError: com/sun/xml/rpc/soap/SOAPVersion
at hotelservice.MyHotelService_SerializerRegistry.getRegistry(MyHotelService_SerializerRegistry.java:32)
at hotelservice.HotelIF_Tie.<init>(HotelIF_Tie.java:32)
at sun.reflect.GeneratedConstructorAccessor47.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:274)
at java.lang.Class.newInstance0(Class.java:306)
at java.lang.Class.newInstance(Class.java:259)
at com.sun.xml.rpc.server.http.ImplementorCache.getImplementorFor(ImplementorCache.java:52)
at com.sun.xml.rpc.server.http.JAXRPCServletDelegate.doPost(JAXRPCServletDelegate.java:256)
at com.sun.xml.rpc.server.http.JAXRPCServlet.doPost(JAXRPCServlet.java:69)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:646)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:483)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:646)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:483)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2349)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:646)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:644)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:171)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:644)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:483)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:646)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:469)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:644)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:483)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:405)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:376)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:508)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:518)
at java.lang.Thread.run(Thread.java:536)
[ERROR] http - -caught throwable <java.lang.NoClassDefFoundError: com/sun/xml/rpc/soap/SOAPVersion>
Error with com/sun/xml/rpc/soap/SOAPVersion? This seems a bit unusual to me.. does this have anything to do with the fact that I was using JWSDP-1.2 to build & compile .war files and the remote server uses JWSDP-1.1?
I tried using www.soapclient.com's message builder and inserted the proper request SOAP message, and got this response SOAP message in return:
<?xml version="1.0" encoding="UTF-8" ?>
- <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
- <env:Body>
- <env:Fault>
<faultcode>env:Server</faultcode>
<faultstring>Missing port information</faultstring>
</env:Fault>
</env:Body>
</env:Envelope>
So this leads me to believe this error is server-side related, not client-side.. but I am not sure whether it is internal server error (as the log file above seems to indicate) or if it's bad .war file. The thing that puzzles me is that .war files are supposed to be portable.. if it works on localhost, the .war file should work on a remote server.
The current WSDL file is at http://frisbee.rit.edu:8080/hotelservice/hs?WSDL
Any ideas what we (or the server?) might be doing wrong?
I then dropped off my .war file into webapps folder at a remote server. I was able to see the WSDL file. However, our client could not access the services because there seems to be some kind of server side error.
After a lot of struggling to no avail, I decided to return to basics.. I commented out everything in HotelImpl.java & HotelIF.java, and added 'public String sayHello(String s)' to both files.. the method simply returns "Hello"+s. That way, I would know the error is not related to business logic code or anything like that. I then uploaded the new .war file to replace my previous .war file.
This excrept was from the launcher.server.log file on the remote server:
java.lang.NoClassDefFoundError: com/sun/xml/rpc/soap/SOAPVersion
at hotelservice.MyHotelService_SerializerRegistry.getRegistry(MyHotelService_SerializerRegistry.java:32)
at hotelservice.HotelIF_Tie.<init>(HotelIF_Tie.java:32)
at sun.reflect.GeneratedConstructorAccessor47.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:274)
at java.lang.Class.newInstance0(Class.java:306)
at java.lang.Class.newInstance(Class.java:259)
at com.sun.xml.rpc.server.http.ImplementorCache.getImplementorFor(ImplementorCache.java:52)
at com.sun.xml.rpc.server.http.JAXRPCServletDelegate.doPost(JAXRPCServletDelegate.java:256)
at com.sun.xml.rpc.server.http.JAXRPCServlet.doPost(JAXRPCServlet.java:69)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:646)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:483)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:646)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:483)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2349)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:646)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:644)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:171)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:644)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:483)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:646)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:469)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:644)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:483)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:405)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:376)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:508)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:518)
at java.lang.Thread.run(Thread.java:536)
[ERROR] http - -caught throwable <java.lang.NoClassDefFoundError: com/sun/xml/rpc/soap/SOAPVersion>
Error with com/sun/xml/rpc/soap/SOAPVersion? This seems a bit unusual to me.. does this have anything to do with the fact that I was using JWSDP-1.2 to build & compile .war files and the remote server uses JWSDP-1.1?
I tried using www.soapclient.com's message builder and inserted the proper request SOAP message, and got this response SOAP message in return:
<?xml version="1.0" encoding="UTF-8" ?>
- <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
- <env:Body>
- <env:Fault>
<faultcode>env:Server</faultcode>
<faultstring>Missing port information</faultstring>
</env:Fault>
</env:Body>
</env:Envelope>
So this leads me to believe this error is server-side related, not client-side.. but I am not sure whether it is internal server error (as the log file above seems to indicate) or if it's bad .war file. The thing that puzzles me is that .war files are supposed to be portable.. if it works on localhost, the .war file should work on a remote server.
The current WSDL file is at http://frisbee.rit.edu:8080/hotelservice/hs?WSDL
Any ideas what we (or the server?) might be doing wrong?