Is that your first client!? Its a little more complex than the average - have you looked at the samples?
I think the problem is that you've set the InProtocol but not the out protocol. What happens if you simple comment out the line: > options.setTransportInProtocol(Constants.TRANSPORT_HTTP); Paul On Tue, May 12, 2009 at 8:53 AM, Claire Loto <[email protected]> wrote: > Hi Paul, > I have attached the files I am using. > thanks a lot > > Regards, > Claire > > Paul Fremantle wrote: > > It looks like your sample code is wrong. Can you post it so we can see? > > Thanks! > Paul > > On Tue, May 12, 2009 at 8:05 AM, Claire Loto <[email protected]> wrote: > > > Hi, > I am trying to run a test client in Axis2 but i got this error: > log4j:WARN No appenders could be found for logger > (org.apache.axis2.util.Loader). > log4j:WARN Please initialize the log4j system properly. > org.apache.axis2.AxisFault: Transport out has not been set > at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:439) > at > org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:330) > at > org.apache.axis2.description.OutInAxisOperationClient.execute(OutInAxisOperation.java:294) > at > org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:520) > at > org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:500) > at org.example.www.helloaxis2.helloClient.main(helloClient.java:37) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:597) > at com.intellij.rt.execution.application.AppMain.main(AppMain.java:90) > > can anyone please help me? > > thanks, > > Claire > > > > > > package org.example.www.helloaxis2; > > /** > * Created by IntelliJ IDEA. > * User: Sajal Dutta > * Date: May 7, 2009 > * Time: 5:04:00 PM > * To change this template use File | Settings | File Templates. > */ > import java.io.StringWriter; > import javax.xml.stream.*; > import org.apache.axiom.om.*; > import org.apache.axis2.*; > import org.apache.axis2.addressing.EndpointReference; > import org.apache.axis2.client.ServiceClient; > import org.apache.axis2.client.Options; > > public class helloClient { > //specify the endpoint reference > private static EndpointReference targetEPR = new EndpointReference( > "http://localhost:8080/axis2/services/helloAxis2"); > public static void main(String[] args) { > try { > OMFactory fac = OMAbstractFactory.getOMFactory(); > OMNamespace omNs = fac.createOMNamespace( > "http://www.example.org/helloAxis2/", "helloAxis2"); > //compose the request element > OMElement request = fac.createOMElement("Request", omNs); > request.addChild(fac.createOMText("MADMUC")); > Options options = new Options(); > //specify sender options: target, transport protocol, and soap > action > options.setTo(targetEPR); > options.setTransportInProtocol(Constants.TRANSPORT_HTTP); > > options.setAction("http://localhost:8080/axis2/services/helloAxis2"); > ServiceClient sender = new ServiceClient(); > sender.setOptions(options); > OMElement result = sender.sendReceive(request); > //print out the response > StringWriter writer = new StringWriter(); > result.serialize(XMLOutputFactory.newInstance() > .createXMLStreamWriter(writer)); > writer.flush(); > System.out.println(writer.toString()); > } catch (AxisFault axisFault) { > axisFault.printStackTrace(); > } catch (XMLStreamException e) { > e.printStackTrace(); > } > } > } > > /** > * HelloAxis2MessageReceiverInOut.java > * > * This file was auto-generated from WSDL > * by the Apache Axis2 version: 1.2 Apr 27, 2007 (04:14:19 IST) > */ > package org.example.www.helloaxis2; > > /** > * HelloAxis2MessageReceiverInOut message receiver > */ > > public class HelloAxis2MessageReceiverInOut extends > org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver{ > > > public void > invokeBusinessLogic(org.apache.axis2.context.MessageContext msgContext, > org.apache.axis2.context.MessageContext newMsgContext) > throws org.apache.axis2.AxisFault{ > > try { > > // get the implementation class for the Web Service > Object obj = getTheImplementationObject(msgContext); > > HelloAxis2Skeleton skel = (HelloAxis2Skeleton)obj; > //Out Envelop > org.apache.axiom.soap.SOAPEnvelope envelope = null; > //Find the axisOperation that has been set by the Dispatch phase. > org.apache.axis2.description.AxisOperation op = > msgContext.getOperationContext().getAxisOperation(); > if (op == null) { > throw new org.apache.axis2.AxisFault("Operation is not located, if > this is doclit style the SOAP-ACTION should specified via the SOAP Action to > use the RawXMLProvider"); > } > > java.lang.String methodName; > if(op.getName() != null & (methodName = > org.apache.axis2.util.JavaUtils.xmlNameToJava(op.getName().getLocalPart())) > != null){ > > > > if("sayHello".equals(methodName)){ > > org.apache.axiom.om.OMElement response1 = null; > org.apache.axiom.om.OMElement wrappedParam = > > (org.apache.axiom.om.OMElement)fromOM( > > msgContext.getEnvelope().getBody().getFirstElement(), > org.apache.axiom.om.OMElement.class, > > getEnvelopeNamespaces(msgContext.getEnvelope())); > > response1 = > > > > skel.sayHello(wrappedParam) > ; > > envelope = > toEnvelope(getSOAPFactory(msgContext), response1, false); > > } else { > throw new RuntimeException("method not found"); > } > > > newMsgContext.setEnvelope(envelope); > } > } > catch (Exception e) { > throw org.apache.axis2.AxisFault.makeFault(e); > } > } > > // > private org.apache.axiom.om.OMElement fromOM( > org.apache.axiom.om.OMElement param, > java.lang.Class type, > java.util.Map extraNamespaces){ > return param; > } > > private org.apache.axiom.om.OMElement > toOM(org.apache.axiom.om.OMElement param, boolean optimizeContent){ > return param; > } > > private org.apache.axiom.soap.SOAPEnvelope > toEnvelope(org.apache.axiom.soap.SOAPFactory factory, > org.apache.axiom.om.OMElement param, boolean optimizeContent){ > org.apache.axiom.soap.SOAPEnvelope envelope = > factory.getDefaultEnvelope(); > envelope.getBody().addChild(param); > return envelope; > } > > /** > * get the default envelope > */ > private org.apache.axiom.soap.SOAPEnvelope > toEnvelope(org.apache.axiom.soap.SOAPFactory factory){ > return factory.getDefaultEnvelope(); > } > > > > /** > * A utility method that copies the namepaces from the SOAPEnvelope > */ > private java.util.Map > getEnvelopeNamespaces(org.apache.axiom.soap.SOAPEnvelope env){ > java.util.Map returnMap = new java.util.HashMap(); > java.util.Iterator namespaceIterator = > env.getAllDeclaredNamespaces(); > while (namespaceIterator.hasNext()) { > org.apache.axiom.om.OMNamespace ns = > (org.apache.axiom.om.OMNamespace) namespaceIterator.next(); > returnMap.put(ns.getPrefix(),ns.getNamespaceURI()); > } > return returnMap; > } > > private org.apache.axis2.AxisFault > createAxisFault(java.lang.Exception e) { > org.apache.axis2.AxisFault f; > Throwable cause = e.getCause(); > if (cause != null) { > f = new org.apache.axis2.AxisFault(e.getMessage(), cause); > } else { > f = new org.apache.axis2.AxisFault(e.getMessage()); > } > > return f; > } > > }//end of class > > > /** > * HelloAxis2Skeleton.java > * > * This file was auto-generated from WSDL > * by the Apache Axis2 version: 1.2 Apr 27, 2007 (04:14:19 IST) > */ > package org.example.www.helloaxis2; > > import org.apache.axiom.om.OMElement; > import org.apache.axiom.om.OMNamespace; > import org.apache.axiom.om.OMAbstractFactory; > import org.apache.axiom.om.OMFactory; > > /** > * HelloAxis2Skeleton java skeleton for the axisService > */ > public class HelloAxis2Skeleton { > public org.apache.axiom.om.OMElement sayHello( > org.apache.axiom.om.OMElement param0) > { > OMFactory fac = OMAbstractFactory.getOMFactory(); > //create a namespace > OMNamespace omNs = fac.createOMNamespace( > "http://www.example.org/helloAxis2/", "helloAxis2"); > //create an element using the namespace > OMElement response = fac.createOMElement("Reponse", omNs); > //get the text content of request message, compose the content of > //response message, and add it to the element > response.addChild(fac.createOMText("Hello, " + param0.getText())); > return response; > } > } > -- Paul Fremantle Co-Founder and CTO, WSO2 Apache Synapse PMC Chair OASIS WS-RX TC Co-chair blog: http://pzf.fremantle.org [email protected] "Oxygenating the Web Service Platform", www.wso2.com
