File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
Win a copy of Clojure in Action this week in the Clojure forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Validation of incoming SOAP message using JAX-WS in JWSDP 2.0

 
Sasanka Reddy Vanga
Greenhorn
Posts: 1
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi,

There is a project requirement of validating the incoming soap message using JAX-WS API in JWSDP 2.0. The application is deployed in Tomcat 5.5.20 server.

As suggested in one of the sites, we created sample application for validating the message using handler class. Pls fid the code snippet below. But when we hit the web service, it throws an error at runtime which is shown below.

Pls suggest me the solution if any.


private boolean processMessage(LogicalMessageContext context) {
boolean processa = true;
Boolean outboundProperty = (Boolean) context
.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
if (!outboundProperty) {
System.out.println("inside if ");
LogicalMessage lm = context.getMessage();
System.out.println("LogicalMessage is "+lm.toString());
Source payload = lm.getPayload();
System.out.println("Source"+payload);
JAXBContext jaxbContext = null;
try {
System.out.println("inside try block");
jaxbContext = JAXBContext
.newInstance("fromwsdlhandler.server");

System.out.println("JAXBContext new instance created...");
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
System.out.println("after creating unmarsheller "+unmarshaller);
SchemaFactory factory = SchemaFactory
.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);

System.out.println("after creating SchemaFactory "+factory);
unmarshaller.setSchema(factory.newSchema(new StreamSource(((ServletContext) context
.get(context.SERVLET_CONTEXT))
.getResourceAsStream("/WEB-INF/wsdl/AddNumbers.xsd"))));

System.out.println("after setSchema ");
JAXBElement myJAXB = (JAXBElement) unmarshaller.unmarshal(payload);
System.out.println("after unmarshelling....."+myJAXB);
} catch (Exception ex) {
System.out.println("in catch block....");
String ff = "<Fault xmlns:ns3=\"http://www.w3.org/2003/05/soap-envelope\"><faultcode>S:Server</faultcode><faultstring>Richiesta non corretta</faultstring></Fault>";
lm.setPayload(new SAXSource(new InputSource(
new StringReader(ff))));
processa = false;
}
}
return processa;
}




Error in decoding SOAP Message

at com.sun.xml.ws.encoding.soap.server.SOAPXMLDecoder.toInternalMessage(SOAPXMLDecoder.java:131)

at com.sun.xml.ws.protocol.soap.server.SOAPMessageDispatcher.toMessageInfo(SOAPMessageDispatcher.java:173)

at com.sun.xml.ws.protocol.soap.server.SOAPMessageDispatcher$SoapInvoker.invoke(SOAPMessageDispatcher.java:533)

at com.sun.xml.ws.protocol.soap.server.SOAPMessageDispatcher.receive(SOAPMessageDispatcher.java:144)

at com.sun.xml.ws.server.Tie.handle(Tie.java:88)

at com.sun.xml.ws.transport.http.servlet.WSServletDelegate.handle(WSServletDelegate.java:279)

at com.sun.xml.ws.transport.http.servlet.WSServletDelegate.doPost(WSServletDelegate.java:232)

at com.sun.xml.ws.transport.http.servlet.WSServlet.doPost(WSServlet.java:77)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)

at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)

at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)

at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)

at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)

at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)

at java.lang.Thread.run(Unknown Source)

Caused by: javax.xml.ws.soap.SOAPFaultException: Cannot find the dispatch method

at com.sun.xml.ws.encoding.soap.SOAPDecoder.raiseFault(SOAPDecoder.java:662)

at com.sun.xml.ws.encoding.soap.server.SOAPXMLDecoder.decodeDispatchMethod(SOAPXMLDecoder.java:151)

at com.sun.xml.ws.encoding.soap.SOAPDecoder.decodeBodyContent(SOAPDecoder.java:335)

at com.sun.xml.ws.encoding.soap.SOAPDecoder.convertBodyBlock(SOAPDecoder.java:386)

at com.sun.xml.ws.encoding.soap.server.SOAPXMLDecoder.toInternalMessage(SOAPXMLDecoder.java:124)


Regards,
Sasanka
 
Ulf Dittmer
Rancher
Pie
Posts: 42966
73
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Welcome to JavaRanch.

In which line is the exception thrown?
 
It is sorta covered in the JavaRanch Style Guide.
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic