Here's my code. For some reason, I am still getting an exception when
calling my service:

Here are the relevant code snippets. Any inputs appreciated:

axis2.xml
---------
.......
  <phaseOrder type="inflow">
       <!--  System pre defined phases       -->
        <phase name="Transport">
           <!--<handler name="RequestURIBasedDispatcher"
                    class="
org.apache.axis2.engine.RequestURIBasedDispatcher">
               <order phase="Dispatch"/>
           </handler>-->
           <!--<handler name="SOAPActionBasedDispatcher"-->
                    <!--class="
org.apache.axis2.engine.SOAPActionBasedDispatcher">-->
               <!--<order phase="Dispatch"/>-->
           <!--</handler>-->
       </phase>
       <phase name="Security"/>
       <phase name="PreDispatch"/>
       <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase
">
           <handler name="SoapDispatcher"
                    class="com.myco.framework.service.SoapDispatcher">
               <order phase="Dispatch"/>
           </handler>
.......

dispatcher
----------

public class SoapDispatcher extends AbstractDispatcher {

   private static final long serialVersionUID = -6970206989111592645L;

   private static final String myco_SERVICE_NAME = "SoapGateway";

   private static final QName MEDIATE_OPERATION_NAME = new
QName("mediate");

   public void initDispatcher() {
       QName qn = new QName("http://service.framework.myco.com";,
               "SoapDispatcher");
       HandlerDescription hd = new HandlerDescription(qn);
       super.init(hd);
   }

   public AxisService findService(MessageContext mc) throws AxisFault {
       AxisConfiguration ac = mc.getConfigurationContext()
               .getAxisConfiguration();
       AxisService as = ac.getService(myco_SERVICE_NAME);
       return as;
   }

   public AxisOperation findOperation(AxisService svc, MessageContext mc)
           throws AxisFault {
       AxisOperation ao = svc.getOperation(MEDIATE_OPERATION_NAME);
       return ao;
   }
}

services.xml
-------------

<!-- Can be used if the mediator is to be provided as an axis2 service -->
<service name="SoapGateway">
   <parameter name="ServiceClass" locked="false">
com.myco.framework.service.SoapGateway</parameter>
   <operation name="mediate">
   <messageReceiver class="com.myco.framework.service.SoapMessageReceiver"
/>
   </operation>
</service>


service (please note that this is meant to be a gateway to other service
endpoints and the receiver has the appropriate logic to invoke the
endpoints)
-------

public class SoapGateway {
   private static Logger logger = LogMgr.getLogger(LogComponent.SERVICE);

   public boolean mediate(MessageContext synCtx)
       throws AxisFault {
       try {
           System.out.println("Entered the mediator code..");
           return false;
       } catch (Exception e) {
           return false;
       }
   }


message receiver
-----------------

public class SoapMessageReceiver extends RawXMLINOutMessageReceiver {

   private static ServiceRegistryConnector serviceRegistryConnector =
ServiceMgr
           .getServiceRegistryConnector();

   private static Logger logger = LogMgr.getLogger(LogComponent.SERVICE);

   public void invokeBusinessLogic(MessageContext inMessage,
           MessageContext outMessage) throws AxisFault {
       logger.log(Level.INFO, "Begin SoapMessageReceiver logic...");
       .......

       // set the response SOAP message of an endpoint service to gateway
to outMessage
   }

.......

Exception trace when calling service
---------------------------------------------
INFO: Request SOAP Envelope:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
xmlns:xsd="http://www.w3.org/2001/XMLSchema";>
<soapenv:Body>
<getAirport xmlns="http://services.myco.com/xsd";>
<airportCode>LAX</airportCode>
</getAirport>
</soapenv:Body>
</soapenv:Envelope>

### Sending back response from SoapMessagereceiver: <?xml version='1.0'
encoding='utf-8'?><soapenv:E
nvelope 
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";><soapenv:Header
/><soapenv:Body><n
s:getAirportResponse
xmlns:ns="http://services.myco.com/xsd";><ns:return><airportCode
xmlns="htt
p://services.myco.com/xsd">LAX</airportCode><airportName xmlns="
http://services.myco.com/x
sd">Los Angeles International Apt</airportName><cityCode xmlns="
http://services.myco.com/xsd";>L
AX</cityCode><cityName xmlns="http://services.myco.com/xsd";>Los
Angeles</cityName><countryCode
xmlns="http://services.myco.com/xsd";>US</countryCode><countryName xmlns="
http://services.gridsc
ope.com/xsd">USA</countryName><gmtVar xmlns="http://services.myco.com/xsd
">-0800
</gmtVar><latitudeAsDecimal xmlns="http://services.myco.com/xsd";>33.933334
</latitudeAsDecimal><
latitudeInDegrees xmlns="http://services.myco.com/xsd";>33.56.00N
</latitudeInDegrees><longitudeA
sDecimal 
xmlns="http://services.myco.com/xsd";>-118.4</longitudeAsDecimal><longitudeInDegrees
xm
lns="http://services.myco.com/xsd";>118.24.00W</longitudeInDegrees><oagRegionCode
xmlns="http://
services.myco.com/xsd">NA1</oagRegionCode><oagRegionName xmlns="
http://services.myco.com/x
sd">North America</oagRegionName><stateCode xmlns="
http://services.myco.com/xsd";>CA</stateCode>
<stateName xmlns="http://services.myco.com/xsd
">California</stateName></ns:return></ns:getAirpo
rtResponse></soapenv:Body></soapenv:Envelope>
Apr 20, 2007 12:43:02 AM com.myco.framework.service.WebServiceInvokerinvokeSoap
SEVERE: Error when invoking service via SOAP message
javax.xml.soap.SOAPException: org.xml.sax.SAXException: Bad envelope tag:
getAirportResponse
       at org.apache.axis.soap.SOAPConnectionImpl.call(
SOAPConnectionImpl.java:95)
       at com.myco.framework.service.WebServiceInvoker.invokeSoap(Unknown
Source)
       at com.myco.admin.CallServiceDirectAction.execute(Unknown Source)
       at org.apache.struts.action.RequestProcessor.processActionPerform(
RequestProcessor.java:484)

       at org.apache.struts.action.RequestProcessor.process(
RequestProcessor.java:274)
       at org.apache.struts.action.ActionServlet.process(ActionServlet.java
:1480)
       at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java
:524)
       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.j
ava:252)
       at org.apache.catalina.core.ApplicationFilterChain.doFilter(
ApplicationFilterChain.java:173)

       at org.displaytag.filter.ResponseOverrideFilter.doFilter(
ResponseOverrideFilter.java:125)
       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
ApplicationFilterChain.j
ava:202)
       at org.apache.catalina.core.ApplicationFilterChain.doFilter(
ApplicationFilterChain.java:173)

       at net.sf.jguard.filters.AccessFilter.doFilter(AccessFilter.java
:288)
       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
ApplicationFilterChain.j
ava:202)
       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
(Htt
p11BaseProtocol.java:664)
       at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(
PoolTcpEndpoint.java:527)
       at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(
LeaderFollowerWorkerThread.ja
va:80)
       at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(
ThreadPool.java:684)
       at java.lang.Thread.run(Thread.java:595)
Caused by: org.xml.sax.SAXException: Bad envelope tag:  getAirportResponse
       at org.apache.axis.AxisFault.makeFault(AxisFault.java:101)
       at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:701)
       at org.apache.axis.Message.getSOAPEnvelope(Message.java:424)
       at org.apache.axis.client.Call.invokeEngine(Call.java:2785)
       at org.apache.axis.client.Call.invoke(Call.java:2748)
       at org.apache.axis.client.Call.invoke(Call.java:1862)
       at org.apache.axis.soap.SOAPConnectionImpl.call(
SOAPConnectionImpl.java:90)
       ... 28 more
Caused by: org.xml.sax.SAXException: Bad envelope tag:  getAirportResponse
       at org.apache.axis.message.EnvelopeBuilder.startElement(
EnvelopeBuilder.java:70)
       at org.apache.axis.encoding.DeserializationContext.startElement(
DeserializationContext.java:
1048)
       at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown
Source)
       at 
org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown
Source)
       at
org.apache.xerces.impl.XMLNSDocumentScannerImpl$NSContentDispatcher.scanRootElementHook
(U
nknown Source)
       at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch
(
Unknown Source)
       at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown
Source)
       at org.apache.xerces.parsers.XML11Configuration.parse(Unknown
Source)
       at org.apache.xerces.parsers.XML11Configuration.parse(Unknown
Source)
       at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
       at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
       at javax.xml.parsers.SAXParser.parse(SAXParser.java:375)
       at org.apache.axis.encoding.DeserializationContext.parse(
DeserializationContext.java:227)
       at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
       ... 33 more
com.myco.framework.service.ServiceException: org.xml.sax.SAXException: Bad
envelope tag:  getAi
rportResponse
       at com.myco.framework.service.WebServiceInvoker.invokeSoap(Unknown
Source)
       at com.myco.admin.CallServiceDirectAction.execute(Unknown Source)
       at org.apache.struts.action.RequestProcessor.processActionPerform(
RequestProcessor.java:484)

       at org.apache.struts.action.RequestProcessor.process(
RequestProcessor.java:274)
       at org.apache.struts.action.ActionServlet.process(ActionServlet.java
:1480)
       at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java
:524)
       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.j
ava:252)
       at org.apache.catalina.core.ApplicationFilterChain.doFilter(
ApplicationFilterChain.java:173)

       at org.displaytag.filter.ResponseOverrideFilter.doFilter(
ResponseOverrideFilter.java:125)
       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
ApplicationFilterChain.j
ava:202)
       at org.apache.catalina.core.ApplicationFilterChain.doFilter(
ApplicationFilterChain.java:173)

       at net.sf.jguard.filters.AccessFilter.doFilter(AccessFilter.java
:288)
       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
ApplicationFilterChain.j
ava:202)
       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
(Htt
p11BaseProtocol.java:664)
       at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(
PoolTcpEndpoint.java:527)
       at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(
LeaderFollowerWorkerThread.ja
va:80)
       at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(
ThreadPool.java:684)
       at java.lang.Thread.run(Thread.java:595)
Caused by: javax.xml.soap.SOAPException: org.xml.sax.SAXException: Bad
envelope tag:  getAirportResp
onse
       at org.apache.axis.soap.SOAPConnectionImpl.call(
SOAPConnectionImpl.java:95)
       ... 28 more
Caused by: org.xml.sax.SAXException: Bad envelope tag:  getAirportResponse
       at org.apache.axis.AxisFault.makeFault(AxisFault.java:101)
       at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:701)
       at org.apache.axis.Message.getSOAPEnvelope(Message.java:424)
       at org.apache.axis.client.Call.invokeEngine(Call.java:2785)
       at org.apache.axis.client.Call.invoke(Call.java:2748)
       at org.apache.axis.client.Call.invoke(Call.java:1862)
       at org.apache.axis.soap.SOAPConnectionImpl.call(
SOAPConnectionImpl.java:90)
       ... 28 more
Caused by: org.xml.sax.SAXException: Bad envelope tag:  getAirportResponse
       at org.apache.axis.message.EnvelopeBuilder.startElement(
EnvelopeBuilder.java:70)
       at org.apache.axis.encoding.DeserializationContext.startElement(
DeserializationContext.java:
1048)
       at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown
Source)
       at 
org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown
Source)
       at
org.apache.xerces.impl.XMLNSDocumentScannerImpl$NSContentDispatcher.scanRootElementHook
(U
nknown Source)
       at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch
(
Unknown Source)
       at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown
Source)
       at org.apache.xerces.parsers.XML11Configuration.parse(Unknown
Source)
       at org.apache.xerces.parsers.XML11Configuration.parse(Unknown
Source)
       at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
       at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
       at javax.xml.parsers.SAXParser.parse(SAXParser.java:375)
       at org.apache.axis.encoding.DeserializationContext.parse(
DeserializationContext.java:227)
       at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
       ... 33 more


============

Any inputs for resolving this would be appreciated.

Thanks!
Ron






On 4/19/07, Deepal Jayasinghe <[EMAIL PROTECTED]> wrote:

Hi Soactive;

> I am trying to use axis2 to dispatch all requests to a particular
> service. This service also has a registered receiver which executes
> the appropriate business logic (essentially calling other external
> services).

I think you are talking abt a Message receiver .

> All logic is currently within the receiver and there is not much to be
> done in the actual service invoked by the dispatcher. I am faced with
> an issue where the receiver is being called but not the service.

If you have register a receiver then the receiver need to call the
service. Axis2 is not going to call the service for you.

> Is there a particular signature for the service operation that I need
> to use. Currently I use the following:
>
> public boolean mediate(MessageContext synCtx) {...}

Nope , you can implement you MR the way you want.

>
> I am wondering why the receiver is invoked but not the actual service.
> Is there a way to return / truncate processing directly from the
> receiver back to the caller?
>
> Thanks in advance,
> Ron



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


Reply via email to