Hi Martin, I want to work at the XML level because I don't want to care about WSDLs since the service is just a proxy service.
Michele On Sat, 2000-10-14 at 11:27 -0400, Martin Gainty wrote: > 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: [email protected] > 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 <[EMAIL PROTECTED]> 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<String> 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 > <[EMAIL PROTECTED]>Brian > > > De Pradine <[EMAIL PROTECTED]> > > > > > > > > > Brian De Pradine > <[EMAIL PROTECTED]> > > > > > > 10/11/2007 07:02 AM > > > Please respond to > > > [email protected] > > > > > > > > > To > > > > > > [email protected] > > > > > > 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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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: > [EMAIL PROTECTED] > > > > > > For additional commands, e-mail: > [EMAIL PROTECTED] > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ______________________________________________________________________ > > > > > > > > > > > > > > > > > > > > > > > > > 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: > [EMAIL PROTECTED] > > > > For additional commands, e-mail: > [EMAIL PROTECTED] > > > > > > > > > > > > > > > > > > > > > > > > > > ______________________________________________________________________ > > > > > > > > > > > > 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: [EMAIL PROTECTED] > > For additional commands, e-mail: > [EMAIL PROTECTED] > > > > > > > ______________________________________________________________ > > > > > 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: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
