axis-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Martin Gainty" <mgai...@hotmail.com>
Subject Re: [Axis2] JAX-WS & working at xml level on the client side
Date Sat, 14 Oct 2000 15:27:48 GMT
Michele-
if your properties file contains an Action property set to DEFAULT (and the default for Action
is DEFAULT)
you can set the soapAction in your WSDL e.g.

  <binding name="City_BBBBinding" type="tns:City_BBBPortType">
    <soap:binding style="document"
    transport="http://schemas.xmlsoap.org/soap/http" />

    <operation name="getAttraction">
      <soap:operation soapAction="getAttraction" />

Did I miss anything Group?

Martin
  ----- Original Message ----- 
  From: Brian De Pradine 
  To: axis-user@ws.apache.org 
  Sent: Saturday, October 13, 2007 7:16 AM
  Subject: Re: [Axis2] JAX-WS & working at xml level on the client side



  Hello Michele, 

  It appears that the request cannot be dispatched based solely on the content of the SOAP
body. Try setting the SOAPAction explicitly before you call dispatch.invoke() 

              Map<String, Object> map = dispatch.getRequestContext(); 
              map.put(BindingProvider.SOAPACTION_USE_PROPERTY, Boolean.TRUE); 
              map.put(BindingProvider.SOAPACTION_URI_PROPERTY, "..."); 

  Cheers

  Brian DePradine
  Web Services Development
  IBM Hursley
  External  +44 (0) 1962 816319         Internal 246319

  If you can't find the time to do it right the first time, where will you find the time to
do it again?


  Michele Mazzucco <Michele.Mazzucco@ncl.ac.uk> wrote on 12/10/2007 10:22:35:

  > Nick.
  > 
  > thanks, but I can't get it working.
  > 
  > Here is the service (it's like SOAP12Provider, but without
  > dependencies):
  > 
  > package service.jaxws;
  > 
  > import javax.xml.ws.BindingType;
  > import javax.xml.ws.Provider;
  > import javax.xml.ws.WebServiceProvider;
  > import javax.xml.ws.soap.SOAPBinding;
  > 
  > /**
  >  * A Provider&lt;String&gt; implementation used to test sending and 
  >  * receiving SOAP 1.2 messages.
  >  */
  > @WebServiceProvider()
  > @BindingType(SOAPBinding.SOAP12HTTP_BINDING)
  > public class SOAP12Provider implements Provider<String> {
  > 
  >     private static final String sampleResponse = 
  >         "<test:echoStringResponse xmlns:test=
  > \"http://org/apache/axis2/jaxws/test/SOAP12\">" +
  >         "<test:output>SAMPLE REQUEST MESSAGE</test:output>" +
  >         "</test:echoStringResponse>";
  >     
  >     /* 
  >      * @see javax.xml.ws.Provider#invoke(java.lang.Object)
  >      */
  >     public String invoke(String obj) {
  >         System.out.printf("Received >>> %s\n", obj);
  >         return sampleResponse;
  >     }
  > 
  > }
  > 
  > 
  > which runs into an embedded axis2 instance:
  > 
  > import java.util.HashMap;
  > import java.util.Map;
  > 
  > 
  > import org.apache.axis2.AxisFault;
  > import org.apache.axis2.context.ConfigurationContext;
  > import org.apache.axis2.context.ConfigurationContextFactory;
  > import org.apache.axis2.description.AxisService;
  > import org.apache.axis2.transport.http.SimpleHTTPServer;
  > import org.apache.log4j.BasicConfigurator;
  > 
  > import service.jaxws.SOAP12Provider;
  > 
  > /**
  >  * <a href="http://wso2.org/library/83">How do I Embed SimpleHTTPServer
  > in My
  >  * Application and Deploy a POJO?</a>
  >  * 
  >  */
  > public class EmbeddedAxis2Server {
  >     
  >     static {
  >         BasicConfigurator.configure();
  >     }
  > 
  >     /**
  >      * @param args
  >      */
  >     public static void main(String[] args) throws AxisFault {
  >         ConfigurationContext context = ConfigurationContextFactory
  >                 .createConfigurationContextFromFileSystem(null, null);
  > 
  >         Map<String, String> map = new HashMap<String, String>(1);
  >         map.put("http://www.w3.org/2004/08/wsdl/in-out",
  > "org.apache.axis2.jaxws.server.JAXWSMessageReceiver");
  > 
  >         AxisService echoJaxWs =
  > AxisService.createService(SOAP12Provider.class.getName(),
  >             context.getAxisConfiguration(), map,
  > "http://org/apache/axis2/jaxws/test/SOAP12",
  > "http://org/apache/axis2/jaxws/test/SOAP12",
  >             Thread.currentThread().getContextClassLoader());
  >         context.getAxisConfiguration().addService(echoJaxWs);
  > 
  >         SimpleHTTPServer server = new SimpleHTTPServer(context, 8080);
  >         server.start();
  >     }
  > 
  > }
  > 
  > 
  > The client is SOAP12Dispatch + the main method
  > 
  > import java.io.ByteArrayInputStream;
  > import java.io.ByteArrayOutputStream;
  > 
  > import javax.xml.ws.Service.Mode;
  > import javax.xml.namespace.QName;
  > import javax.xml.transform.Source;
  > import javax.xml.transform.Transformer;
  > import javax.xml.transform.TransformerFactory;
  > import javax.xml.transform.stream.StreamResult;
  > import javax.xml.transform.stream.StreamSource;
  > import javax.xml.ws.Dispatch;
  > import javax.xml.ws.Service;
  > import javax.xml.ws.soap.SOAPBinding;
  > import javax.xml.ws.soap.SOAPFaultException;
  > 
  > import org.apache.log4j.BasicConfigurator;
  > 
  > public class SOAP12Dispatch {
  > 
  >     private static final QName QNAME_SERVICE = new QName(
  >         "http://org/apache/axis2/jaxws/test/SOAP12", "SOAP12Service");
  > 
  >     private static final QName QNAME_PORT = new QName(
  >         "http://org/apache/axis2/jaxws/test/SOAP12", "SOAP12Port");
  > 
  >     private static final String URL_ENDPOINT =
  > "http://localhost:8080/axis2/services/SOAP12Provider";
  > 
  >     private static final String sampleRequest = "<test:echoString
  > xmlns:test=\"http://org/apache/axis2/jaxws/test/SOAP12\">"
  >             + "<test:input>SAMPLE REQUEST MESSAGE</test:input>" +
  > "</test:echoString>";
  > 
  >     private static final String sampleEnvelopeHead = "<soapenv:Envelope
  > xmlns:soapenv=\"http://www.w3.org/2003/05/soap-envelope\">"
  >             + "<soapenv:Header /><soapenv:Body>";
  > 
  >     private static final String sampleEnvelopeHead_MustUnderstand =
  > "<soapenv:Envelope xmlns:soapenv=
  > \"http://www.w3.org/2003/05/soap-envelope\">"
  >             + "<soapenv:Header>"
  >             + "<soapenv:codeHeaderSOAP12 soapenv:mustUnderstand=\"true
  > \">"
  >             + "<code>default</code>"
  >             + "</soapenv:codeHeaderSOAP12>"
  >             + "</soapenv:Header>" + "<soapenv:Body>";
  > 
  >     private static final String sampleEnvelopeTail =
  > "</soapenv:Body></soapenv:Envelope>";
  > 
  >     private static final String sampleEnvelope = sampleEnvelopeHead +
  > sampleRequest
  >             + sampleEnvelopeTail;
  > 
  >     private static final String sampleEnvelope_MustUnderstand =
  > sampleEnvelopeHead_MustUnderstand
  >             + sampleRequest + sampleEnvelopeTail;
  > 
  > 
  >     /**
  >      * Test sending a SOAP 1.2 request in PAYLOAD mode
  >      */
  >     public void testSOAP12DispatchPayloadMode() throws Exception {
  >         // Create the JAX-WS client needed to send the request
  >         Service service = Service.create(QNAME_SERVICE);
  >         service.addPort(QNAME_PORT, SOAPBinding.SOAP12HTTP_BINDING,
  > URL_ENDPOINT);
  >         Dispatch<Source> dispatch = service.createDispatch(
  >                 QNAME_PORT, Source.class, Mode.PAYLOAD);
  >         
  >         // Create the Source object with the payload contents.  Since
  >         // we're in PAYLOAD mode, we don't have to worry about the
  > envelope.
  >         byte[] bytes = sampleRequest.getBytes();
  >         ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
  >         StreamSource request = new StreamSource(bais);
  >         
  >         // Send the SOAP 1.2 request
  >         Source response = dispatch.invoke(request);
  >         
  >         // Convert the response to a more consumable format
  >         ByteArrayOutputStream baos = new ByteArrayOutputStream();
  >         StreamResult result = new StreamResult(baos);
  >         
  >         TransformerFactory factory = TransformerFactory.newInstance();
  >         Transformer trans = factory.newTransformer();
  >         trans.transform(response, result);
  >         
  >         // Check to make sure the contents are correct.  Again, since
  > we're
  >         // in PAYLOAD mode, we shouldn't have anything related to the
  > envelope
  >         // in the return, just the contents of the Body.
  >         String responseText = baos.toString();
  >         if (responseText.contains("soap")) {
  >             throw new IllegalStateException("the response contains
  > 'soap'");
  >         }
  >         if (responseText.contains("Body")) {
  >             throw new IllegalStateException("the response contains
  > 'Body'");
  >         }
  >         if (responseText.contains("Envelope")) {
  >             throw new IllegalStateException("the response contains
  > 'Envelope'");
  >         }
  >         if (responseText.contains("echoStringResponse")) {
  >             throw new IllegalStateException("the response contains
  > 'echoStringResponse'");
  >         }       
  >     }
  >     
  >     /**
  >      * Test sending a SOAP 1.2 request in MESSAGE mode
  >      */
  >     public void testSOAP12DispatchMessageMode() throws Exception {
  >         // Create the JAX-WS client needed to send the request
  >         Service service = Service.create(QNAME_SERVICE);
  >         service.addPort(QNAME_PORT, SOAPBinding.SOAP12HTTP_BINDING,
  > URL_ENDPOINT);
  >         Dispatch<Source> dispatch = service.createDispatch(
  >                 QNAME_PORT, Source.class, Mode.MESSAGE);
  >         
  >         // Create the Source object with the message contents.  Since
  >         // we're in MESSAGE mode, we'll need to make sure we create this
  >         // with the right protocol.
  >         byte[] bytes = sampleEnvelope.getBytes();
  >         ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
  >         StreamSource request = new StreamSource(bais);
  >         
  >         Source response = dispatch.invoke(request);
  >         
  >         // Convert the response to a more consumable format
  >         ByteArrayOutputStream baos = new ByteArrayOutputStream();
  >         StreamResult result = new StreamResult(baos);
  >         
  >         TransformerFactory factory = TransformerFactory.newInstance();
  >         Transformer trans = factory.newTransformer();
  >         trans.transform(response, result);
  >         
  >         // Check to make sure the contents of the message are correct
  >         String responseText = baos.toString();
  >         
  >         if (! responseText.contains("soap")) {
  >             throw new IllegalStateException("the response does not
  > contain 'soap'");
  >         }
  >         if (! responseText.contains("Body")) {
  >             throw new IllegalStateException("the response does not
  > contain 'Body'");
  >         }
  >         if (! responseText.contains("Envelope")) {
  >             throw new IllegalStateException("the response does not
  > contain 'Envelope'");
  >         }
  >         if (! responseText.contains("echoStringResponse")) {
  >             throw new IllegalStateException("the response does not
  > contain 'echoStringResponse'");
  >         }
  >         
  >         // Check to make sure the message returned had the right
  > protocol version
  >         // TODO: Need to determine whether or not we should be using the
  > hard 
  >         // coded URLs here, or whether we should be using a constant for
  > the 
  >         // purposes of the test.
  >         if (!
  > responseText.contains("http://www.w3.org/2003/05/soap-envelope")) {
  >             throw new IllegalStateException("the response does not
  > contain 'http://www.w3.org/2003/05/soap-envelope'");
  >         }
  >         if (!
  > responseText.contains("http://schemas.xmlsoap.org/soap/envelop")) {
  >             throw new IllegalStateException("the response does not
  > contain 'http://schemas.xmlsoap.org/soap/envelop'");
  >         }
  >     }
  >     
  >     /**
  >      * Test sending a SOAP 1.2 request in MESSAGE mode
  >      */
  >     public void testSOAP12DispatchMessageMode_MustUnderstand() throws
  > Exception {
  >         // Create the JAX-WS client needed to send the request
  >         Service service = Service.create(QNAME_SERVICE);
  >         service.addPort(QNAME_PORT, SOAPBinding.SOAP12HTTP_BINDING,
  > URL_ENDPOINT);
  >         Dispatch<Source> dispatch = service.createDispatch(
  >                 QNAME_PORT, Source.class, Mode.MESSAGE);
  >         
  >         // Create the Source object with the message contents.  Since
  >         // we're in MESSAGE mode, we'll need to make sure we create this
  >         // with the right protocol.
  >         byte[] bytes = sampleEnvelope_MustUnderstand.getBytes();
  >         ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
  >         StreamSource request = new StreamSource(bais);
  >         
  >         SOAPFaultException e = null;
  >         try {
  >             @SuppressWarnings("unused")
  >             Source response = dispatch.invoke(request);
  >             throw new RuntimeException("We should have an exception, but
  > none was thrown.", e);
  >         } catch (SOAPFaultException ex) {
  >             System.out.println("ok, exception expected");
  >             e = ex;
  >             
  > 
  >             if (!
  > "MustUnderstand".equals(e.getFault().getFaultCodeAsQName().getLocalPart())) {
  >                 throw new RuntimeException("FaultCode should be
  > \"MustUnderstand\"");
  >             }
  >         }
  >     }
  >     
  >     
  >     /**
  >      * @param args
  >      * @throws Exception 
  >      */
  >     public static void main(String[] args) throws Exception {
  >         BasicConfigurator.configure();
  >         SOAP12Dispatch dispatch = new SOAP12Dispatch();
  >         dispatch.testSOAP12DispatchPayloadMode();
  >     }
  > 
  > }
  > 
  > 
  > 
  > When I run it I get this error on the client side, it doesn't matter
  > whether the endpoint is 
  > http://localhost:8080/axis2/services/SOAP12Provider
  > or
  > http://localhost:8080/axis2/services/SOAP12ProviderService
  > 
  > 
  > 4894 [main] DEBUG
  > org.apache.axis2.jaxws.message.util.impl.SAAJConverterImpl  - Converting
  > OMElement to an SAAJ SOAPElement
  > Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: The
  > endpoint reference (EPR) for the Operation not found is
  > 127.0.0.1/axis2/services/SOAP12Provider and the WSA Action =
  > urn:anonOutInOp
  >    at
  > org.apache.axis2.jaxws.marshaller.impl.alt.MethodMarshallerUtils.
  > createSystemException(MethodMarshallerUtils.java:1192)
  >    at
  > org.apache.axis2.jaxws.client.dispatch.BaseDispatch.
  > getFaultResponse(BaseDispatch.java:405)
  >    at
  > org.apache.axis2.jaxws.client.dispatch.BaseDispatch.
  > invoke(BaseDispatch.java:170)
  >    at
  > service.jaxws.SOAP12Dispatch.
  > testSOAP12DispatchPayloadMode(SOAP12Dispatch.java:81)
  >    at service.jaxws.SOAP12Dispatch.main(SOAP12Dispatch.java:205)
  > 
  > 
  > 
  > Any idea?
  > 
  > Michele
  > 
  > On Thu, 2007-10-11 at 13:03 -0500, Nicholas L Gallardo wrote:
  > > There are also a number of examples in the JAX-WS test bucket. 
  > > 
  > > Look at org.apache.axis2.jaxws.dispatch.*
  > > 
  > > -Nick
  > > 
  > > Inactive hide details for Brian De Pradine <PRADINE@uk.ibm.com>Brian
  > > De Pradine <PRADINE@uk.ibm.com>
  > > 
  > > 
  > >                                 Brian De Pradine <PRADINE@uk.ibm.com> 
  > >                                 
  > >                                 10/11/2007 07:02 AM 
  > >                                 Please respond to
  > >                                 axis-user@ws.apache.org
  > >                                 
  > > 
  > >                To
  > > 
  > > axis-user@ws.apache.org
  > > 
  > >                cc
  > > 
  > > 
  > > 
  > >           Subject
  > > 
  > > Re: [Axis2]
  > > JAX-WS & working
  > > at xml level on
  > > the client side
  > > 
  > > 
  > > 
  > > 
  > > Hello Michele, 
  > > 
  > > You can find info about dispatch clients at [1]. 
  > > 
  > > [1] https://jax-ws.dev.java.net/nonav/2.1.2/docs/dispatch.html 
  > > 
  > > Cheers
  > > 
  > > Brian DePradine
  > > Web Services Development
  > > IBM Hursley
  > > External +44 (0) 1962 816319 Internal 246319
  > > 
  > > If you can't find the time to do it right the first time, where will
  > > you find the time to do it again?
  > > 
  > > 
  > > Michele Mazzucco <Michele.Mazzucco@ncl.ac.uk> wrote on 11/10/2007
  > > 12:47:39:
  > > 
  > > > Hi Brian,
  > > > 
  > > > what do you mean?, do you have any example?
  > > > 
  > > > Thanks,
  > > > Michele
  > > > 
  > > > On Thu, 2007-10-11 at 12:45 +0100, Brian De Pradine wrote:
  > > > > 
  > > > > Hello Michele, 
  > > > > 
  > > > > Try creating a dispatch client. 
  > > > > 
  > > > > Cheers
  > > > > 
  > > > > Brian DePradine
  > > > > Web Services Development
  > > > > IBM Hursley
  > > > > External  +44 (0) 1962 816319         Internal 246319
  > > > > 
  > > > > If you can't find the time to do it right the first time, where
  > > will
  > > > > you find the time to do it again?
  > > > > 
  > > > > 
  > > > > Michele Mazzucco <Michele.Mazzucco@ncl.ac.uk> wrote on 11/10/2007
  > > > > 10:57:35:
  > > > > 
  > > > > > Hi all,
  > > > > > 
  > > > > > I understand that by implementing the javax.xml.ws.Provider
  > > > > interface
  > > > > > it's possible to work at low level (i.e. to control the XML
  > > which is
  > > > > > sent back and forth).
  > > > > > Now, if I have a service which implements the Provider interface
  > > is
  > > > > > there any way to work at low level on the client side as well,
  > > that
  > > > > is
  > > > > > the same way as ServiceClient + RawXML.. msg. receivers + Axiom?
  > > > > > 
  > > > > > 
  > > > > > Thanks,
  > > > > > Michele
  > > > > > 
  > > > > > 
  > > > > >
  > > > >
  > > ---------------------------------------------------------------------
  > > > > > To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
  > > > > > For additional commands, e-mail: axis-user-help@ws.apache.org
  > > > > > 
  > > > > 
  > > > > 
  > > > > 
  > > > > 
  > > > >
  > > ______________________________________________________________________
  > > > > 
  > > > > 
  > > > > 
  > > > > 
  > > > > Unless stated otherwise above:
  > > > > IBM United Kingdom Limited - Registered in England and Wales with
  > > > > number 741598. 
  > > > > Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire
  > > PO6
  > > > > 3AU 
  > > > > 
  > > > > 
  > > > > 
  > > > > 
  > > > > 
  > > > > 
  > > > 
  > > > 
  > > >
  > > ---------------------------------------------------------------------
  > > > To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
  > > > For additional commands, e-mail: axis-user-help@ws.apache.org
  > > > 
  > > 
  > > 
  > > 
  > > 
  > > 
  > > 
  > > ______________________________________________________________________
  > > 
  > > 
  > > 
  > > Unless stated otherwise above:
  > > IBM United Kingdom Limited - Registered in England and Wales with
  > > number 741598. 
  > > Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6
  > > 3AU 
  > > 
  > > 
  > > 
  > > 
  > > 
  > 
  > 
  > ---------------------------------------------------------------------
  > To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
  > For additional commands, e-mail: axis-user-help@ws.apache.org
  > 




------------------------------------------------------------------------------



  Unless stated otherwise above:
  IBM United Kingdom Limited - Registered in England and Wales with number 741598. 
  Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU 








Mime
View raw message