[jboss-user] [JBoss Web Services] - Invoking a web service from JBoss AS as a client

Peter Schilling do-not-reply at jboss.com
Wed Sep 29 07:20:28 EDT 2010


Peter Schilling [http://community.jboss.org/people/pschor] created the discussion

"Invoking a web service from JBoss AS as a client"

To view the discussion, visit: http://community.jboss.org/message/564010#564010

--------------------------------------------------------------
I've been trying to figure this out for several days, any help will be appreciated.

I'm trying to invoke a web service from a java class deployed in JBoss 5.1.0.GA running on JDK1.6.0. I get the exception below. The same method called from a plain Java object and invoked from a command line (using JDK's WS jars instead of JBoss') works perfectly.


I copied the jboss-native-* classes to the endorsed directory (initally to resolve the SetProperty problem), but is there anything else that needs to be considered to invoke a service from JBoss as a client?

Three things that are different from the case when the method is invoked successfully from the command line:
** In the request STDOUT the XML version header was removed (probably by SaveMessage).
** In the request STDOUT quotes were converted to apostrophes.
** Even thought the content type is set as text/xml, the error says content type is text/html

Thanks for your help
Peter


The method and the output/error:


try {

            // Create the SOAP connection
            SOAPConnectionFactory soapConnFactory = SOAPConnectionFactory.newInstance();
            SOAPConnection connection = soapConnFactory.createConnection();


             String soapText =  
                 "<?xml version=\"1.0\"?>" +
                "<SOAP-ENV:Envelope xmlns:SOAP-ENV=\" http://schemas.xmlsoap.org/soap/envelope/ http://schemas.xmlsoap.org/soap/envelope/\"" +  
                 " SOAP-ENV:encodingStyle=\" http://schemas.xmlsoap.org/soap/encoding/ http://schemas.xmlsoap.org/soap/encoding/\">" +  
                 "<SOAP-ENV:Header/>" +
                 "<SOAP-ENV:Body>" +
                 "<Discover xmlns=\"urn:schemas-microsoft-com:xml-analysis\">" +
                 "<RequestType>DISCOVER_DATASOURCES</RequestType>" +
                 "<Restrictions><RestrictionList/></Restrictions>"  +
                 "<Properties><PropertyList><Format>Tabular</Format></PropertyList></Properties>"  +
                 "</Discover>"  +
                 "</SOAP-ENV:Body>" +
                 "</SOAP-ENV:Envelope>";

             // Create SoapMessage  
             MessageFactory msgFactory     = MessageFactory.newInstance();  
             SOAPMessage message           = msgFactory.createMessage();  

             // Load the SOAP text into a stream source  
             ByteArrayInputStream stream   = new ByteArrayInputStream(soapText.getBytes());  
             StreamSource source           = new StreamSource(stream);  

             // Set contents of message   
             message.getSOAPPart().setContent(source);  

             MimeHeaders mh = message.getMimeHeaders();
             mh.setHeader("Content-Type", "text/xml");
             mh.setHeader("SOAPAction", "\"urn:schemas-microsoft-com:xml-analysis:Discover\"");
             //Save the message
             message.saveChanges();

            //Check the input
            System.out.println("HEADERS:\n" );
            Iterator<MimeHeader> i = message.getMimeHeaders().getAllHeaders();

            while ( i.hasNext() ) {
                MimeHeader header = i.next();
                String name = header.getName();
                String value = header.getValue();
                System.out.println ( name + ": " + value);
            }
            System.out.println("END HEADERS:\n" );


            System.out.println("REQUEST:\n");
            message.writeTo(System.out);
            System.out.println("END REQUEST:\n");

            //Send the message and get a reply   

            //Set the destination
            String destination = " http://localhost:7070/mondrian/xmla http://localhost:7070/mondrian/xmla";
            //Send the message
            SOAPMessage reply = connection.call(message, destination);

            //Check the reply
            System.out.println("\nREPLY:\n");
            reply.writeTo(System.out);
            System.out.println("\nEND REPLY:\n");

            // Close the SOAP connection            
            connection.close();

        } catch(Exception e) {
            System.out.println(e.getMessage());
        }

    }



20:50:45,855 INFO  [STDOUT] HEADERS:
20:50:45,855 INFO  [STDOUT] Content-Type: text/xml; charset=UTF-8
20:50:45,855 INFO  [STDOUT] SOAPAction: "urn:schemas-microsoft-com:xml-analysis:Discover"
20:50:45,855 INFO  [STDOUT] END HEADERS:
20:50:45,855 INFO  [STDOUT] REQUEST:
20:50:45,855 INFO  [STDOUT] <SOAP-ENV:Envelope xmlns:SOAP-ENV=' http://schemas.xmlsoap.org/soap/envelope/ http://schemas.xmlsoap.org/soap/envelope/' SOAP-ENV:encodingStyle=' http://schemas.xmlsoap.org/soap/encoding/ http://schemas.xmlsoap.org/soap/encoding/'><SOAP-ENV:Header></SOAP-ENV:Header><SOAP-ENV:Body>
<Discover xmlns='urn:schemas-microsoft-com:xml-analysis'><RequestType>DISCOVER_DATASOURCES
20:50:45,855 INFO  [STDOUT] </RequestType>
20:50:45,855 INFO  [STDOUT] <Restrictions><RestrictionList/>
20:50:45,855 INFO  [STDOUT] </Restrictions>
20:50:45,855 INFO  [STDOUT] <Properties><PropertyList><Format>Tabular
20:50:45,855 INFO  [STDOUT] </Format>
20:50:45,855 INFO  [STDOUT] </PropertyList>
20:50:45,855 INFO  [STDOUT] </Properties>
20:50:45,855 INFO  [STDOUT] </Discover>
20:50:45,855 INFO  [STDOUT] </SOAP-ENV:Body></SOAP-ENV:Envelope>
20:50:45,855 INFO  [STDOUT] END REQUEST:
20:50:59,865 ERROR [SOAPMessageUnMarshallerHTTP] Cannot unmarshall SOAPMessage
javax.xml.soap.SOAPException: Unsupported content type: text/html; charset=utf-8
    at org.jboss.ws.core.soap.MessageFactoryImpl.createMessage(MessageFactoryImpl.java:272)
    at org.jboss.ws.core.soap.SOAPMessageUnMarshallerHTTP.read(SOAPMessageUnMarshallerHTTP.java:82)
    at org.jboss.remoting.transport.http.HTTPClientInvoker.readResponse(HTTPClientInvoker.java:570)
    at org.jboss.remoting.transport.http.HTTPClientInvoker.useHttpURLConnection(HTTPClientInvoker.java:369)
    at org.jboss.remoting.transport.http.HTTPClientInvoker.makeInvocation(HTTPClientInvoker.java:231)
    at org.jboss.remoting.transport.http.HTTPClientInvoker.transport(HTTPClientInvoker.java:161)
    at org.jboss.remoting.MicroRemoteClientInvoker.invoke(MicroRemoteClientInvoker.java:165)
    at org.jboss.remoting.Client.invoke(Client.java:1724)
    at org.jboss.remoting.Client.invoke(Client.java:629)
    at org.jboss.ws.core.client.HTTPRemotingConnection.invoke(HTTPRemotingConnection.java:243)
    at org.jboss.ws.core.client.SOAPProtocolConnectionHTTP.invoke(SOAPProtocolConnectionHTTP.java:71)
    at org.jboss.ws.core.soap.SOAPConnectionImpl.callInternal(SOAPConnectionImpl.java:143)
    at org.jboss.ws.core.soap.SOAPConnectionImpl.call(SOAPConnectionImpl.java:64)
    at bizlayer.mdxquery.XmlaQuery.invokeXmlaService2(XmlaQuery.java:230)
    at org.apache.jsp.web.admin.testsoaclient_jsp._jspService(testsoaclient_jsp.java:61)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:369)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:322)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:249)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190)
    at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92)
    at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)
    at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:598)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    at java.lang.Thread.run(Unknown Source)
20:50:59,881 INFO  [STDOUT] java.io.IOException: Could not transmit message
--------------------------------------------------------------

Reply to this message by going to Community
[http://community.jboss.org/message/564010#564010]

Start a new discussion in JBoss Web Services at Community
[http://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2044]

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/jboss-user/attachments/20100929/100346f9/attachment-0001.html 


More information about the jboss-user mailing list