Hi Deepal,

I don't know how can this happen.
My handler extends AbstractDispatcher and replaces
RequestURIBasedDispatcher and it's globally engaged. Please find
attached axis2.xml and module.xml.
In the default public constructor I have:

public NodeDispatcher() {
                
        this.factory = (SOAP12Factory) OMAbstractFactory.getSOAP12Factory();
                this.omNs = factory.createOMNamespace(SOAPConstants.URI,
SOAPConstants.NODE_PREFIX);
                
                
//Registers the node to the manager
        try {
                if (! registered) {
        // Sends a message to another service running on another tomcat server
(it works)
                        BootstrapHelper.register(factory, omNs);
                        registered = true;
                }
        } catch (AxisFault e) {
                if (log.isEnabledFor(Level.FATAL)) {
                        log.fatal("Unable to register the node: " + 
e.getLocalizedMessage());
                }
        }
                
}

and Bootstrap.register is:

static final void register(SOAP12Factory factory,  OMNamespace omNs)
throws AxisFault {
                
                Options options = new Options();
                options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
                
                ServiceClient sender = new ServiceClient();
                EndpointReference managerEPR = new
EndpointReference(System.getProperty("qosp.manager.epr"));
                
                OperationClient mepClient =
sender.createClient(ServiceClient.ANON_ROBUST_OUT_ONLY_OP);     
                mepClient.setOptions(options);
                
                SOAPEnvelope env = createRegistrationEnvelope(factory, omNs);   
        
                MessageContext ctx = new MessageContext();
                ctx.setEnvelope(env);
                
                ctx.setWSAAction(ActionConstants.ADD_NODE_ACTION);
                ctx.setTo(managerEPR);                  
                
                mepClient.addMessageContext(ctx);
                mepClient.execute(false);
                mepClient.complete(ctx);
                
                if (NodeDispatcher.log.isInfoEnabled()) {
                        NodeDispatcher.log.info("Node [" + 
NodeDispatcher.getNodeName() + "]
registered.");
                }
        }

The exception is thrown after the handler is created.


Hope this helps,
Michele

Deepal Jayasinghe wrote:
> Hi Michele;
> hmm , how can that happen ? when you deploy a handler in server side how
> does OutInAxisOperation throw an exception , can you please explain the
> problem a bit .
> 
> Michele Mazzucco wrote:
> 
>> Hi all,
>>
>> I don't know if this is an Axis2 (snapshot of June 7th) or a Tomcat
>> problem (I can't see this log into the tomcat log files), however when I
>> deploy a custom handler I can see in the console a NullPointerException
>> at OutInAxisOperation:433
>>
>> I tried to set $AXIS2_HOME/WEB-INF/classes/log4j.properties
>>
>> log4j.logger.org.apache.axis2.enterprise=INFO
>> and
>> log4j.rootCategory=INFO, CONSOLE, LOGFILE,
>> however I can't see the the exception in axis2.log.
>>
>>
>> Michele
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>>
>>
>>
>>  
>>
> 
<axisconfig name="AxisJava2.0">
    <!-- ================================================= -->
    <!-- Parameters -->
    <!-- ================================================= -->
    <parameter name="hotdeployment" locked="false">true</parameter>
    <parameter name="hotupdate" locked="false">true</parameter>
    <parameter name="enableMTOM" locked="false">true</parameter>

    <!--During a fault, stacktrace can be sent with the fault message. The following flag will control -->
    <!--that behaviour.-->
    <parameter name="sendStacktraceDetailsWithFaults" locked="false">true</parameter>

    <!--If there aren't any information available to find out the fault reason, we set the message of the expcetion-->
    <!--as the faultreason/Reason. But when a fault is thrown from a service or some where, it will be -->
    <!--wrapped by different levels. Due to this the initial exception message can be lost. If this flag-->
    <!--is set then, Axis2 tries to get the first exception and set its message as the faultreason/Reason.-->
    <parameter name="DrillDownToRootCauseForFaultReason" locked="false">false</parameter>

    <parameter name="userName" locked="false">admin</parameter>
    <parameter name="password" locked="false">admin</parameter>

    <!--<parameter name="contextPath" locked="false">axis2</parameter>-->
    <!--<parameter name="servicePath" locked="false">services</parameter>-->
    <!--Set the flag to true if you want to enable transport level session mangment-->
    <parameter name="manageTransportSession" locked="false">false</parameter>

    <!-- If you have a frontend host which exposes this webservice using a different public URL  -->
    <!-- use this parameter to override autodetected url -->
    <!--<parameter name="httpFrontendHostUrl" locked="false">https://someotherhost/context</parameter>-->


    <!--    The way of adding listener to the system-->
    <!--    <listener class="org.apache.axis2.ObserverIMPL">-->
    <!--        <parameter name="RSS_URL" locked="false">http://127.0.0.1/rss</parameter>-->
    <!--    </listener>-->

    <!-- ================================================= -->
    <!-- Message Receivers -->
    <!-- ================================================= -->
    <!--This is the Deafult Message Receiver for the system , if you want to have MessageReceivers for -->
    <!--all the other MEP implement it and add the correct entry to here , so that you can refer from-->
    <!--any operation -->
    <!--Note : You can ovride this for particular service by adding the same element with your requirement-->
    <messageReceivers>
        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only";
                         class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/>
        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out";
                         class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
    </messageReceivers>
    <!-- ================================================= -->
    <!-- Transport Ins -->
    <!-- ================================================= -->
    <transportReceiver name="http"
                       class="org.apache.axis2.transport.http.SimpleHTTPServer">
        <parameter name="port" locked="false">6060</parameter>
        <!--If you want to give your own host address for EPR generation-->
        <!--uncommet following paramter , and set as you required.-->
        <!--<parameter name="hostname" locked="false">http://myApp.com/ws</parameter>-->
    </transportReceiver>

    <!--Uncomment if you want to have SMTP transport support-->
    <!--<transportReceiver name="mail" class="org.apache.axis2.transport.mail.SimpleMailListener">-->
    <!--<parameter name="transport.mail.pop3.host" locked="false">127.0.0.1</parameter>-->
    <!--<parameter name="transport.mail.pop3.user" locked="false">axis2</parameter>-->
    <!--<parameter name="transport.mail.pop3.password" locked="false">axis2</parameter>-->
    <!--<parameter name="transport.mail.pop3.port" locked="false">110</parameter>-->
    <!--<parameter name="transport.mail.replyToAddress" locked="false">[EMAIL PROTECTED]</parameter>-->
    <!--</transportReceiver>-->

    <transportReceiver name="tcp"
                       class="org.apache.axis2.transport.tcp.TCPServer">
        <parameter name="port" locked="false">6060</parameter>
        <!--If you want to give your own host address for EPR generation-->
        <!--uncommet following paramter , and set as you required.-->
        <!--<parameter name="hostname" locked="false">tcp://myApp.com/ws</parameter>-->
    </transportReceiver>

    <!--Uncomment this if you want JMS transport support-->
    <!--<transportReceiver name="jms" class="org.apache.axis2.transport.jms.SimpleJMSListener">-->
    <!--<parameter name="transport.jms.Destination" locked="false">dynamicQueues/FOO</parameter>-->
    <!--<parameter name="java.naming.factory.initial" locked="false">-->
    <!--org.activemq.jndi.ActiveMQInitialContextFactory</parameter>-->
    <!--<parameter name="java.naming.provider.url" locked="false">tcp://localhost:61616</parameter>-->
    <!--</transportReceiver>-->

    <!-- ================================================= -->
    <!-- Transport Outs -->
    <!-- ================================================= -->

    <transportSender name="tcp"
                     class="org.apache.axis2.transport.tcp.TCPTransportSender"/>
    <transportSender name="local"
                     class="org.apache.axis2.transport.local.LocalTransportSender"/>
    <transportSender name="jms"
                     class="org.apache.axis2.transport.jms.JMSSender"/>
    <transportSender name="http"
                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
        <parameter name="Transfer-Encoding" locked="false">chunked</parameter>
    </transportSender>
    <transportSender name="https"
                     class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
        <parameter name="Transfer-Encoding" locked="false">chunked</parameter>
    </transportSender>

    <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver
   <transportSender name="mailto" class="org.apache.axis2.transport.mail.MailTransportSender">
       <parameter name="transport.mail.smtp.host" locked="false">127.0.0.1</parameter>
       <parameter name="transport.mail.smtp.user" locked="false">axis2</parameter>
       <parameter name="transport.mail.smtp.password" locked="false">axis2</parameter>
       <parameter name="transport.mail.smtp.port" locked="false">25</parameter>
   </transportSender>
   -->

    <!-- ================================================= -->
    <!-- Global Modules  -->
    <!-- ================================================= -->
    <!-- Comment this to disable Addressing -->
    <module ref="addressing"/>
	
	<!-- QOSP computational node module -->
	<module ref="nodeInterceptor"/>


    <!--Configuring module , providing parameters for modules whether they refer or not-->
    <!--<moduleConfig name="addressing">-->
    <!--<parameter name="addressingPara" locked="false">N/A</parameter>-->
    <!--</moduleConfig>-->

    <!-- ================================================= -->
    <!-- Phases  -->
    <!-- ================================================= -->
    <phaseOrder type="inflow">
		<phase name="nodeInterceptorPhase" />
        <!--  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="AddressingBasedDispatcher"
                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
                <order phase="Dispatch"/>
            </handler>

            <handler name="SOAPMessageBodyBasedDispatcher"
                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
                <order phase="Dispatch"/>
            </handler>
            <handler name="InstanceDispatcher"
                     class="org.apache.axis2.engine.InstanceDispatcher">
                <order phase="PostDispatch"/>
            </handler>
        </phase>
        <!--  System pre defined phases       -->
        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
        <phase name="OperationInPhase"/>
    </phaseOrder>
	
    <phaseOrder type="outflow">
		<phase name="nodeInterceptorPhase" />
        <!--      user can add his own phases to this area  -->
        <phase name="OperationOutPhase"/>
        <!--system predefined phase-->
        <!--these phase will run irrespective of the service-->
        <phase name="PolicyDetermination"/>
        <phase name="MessageOut"/>
    </phaseOrder>
	
    <phaseOrder type="INfaultflow">
		<phase name="nodeInterceptorPhase" />
        <phase name="PreDispatch"/>
        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
			<!--
            <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>

            <handler name="AddressingBasedDispatcher"
                     class="org.apache.axis2.engine.AddressingBasedDispatcher">
                <order phase="Dispatch"/>
            </handler>

            <handler name="SOAPMessageBodyBasedDispatcher"
                     class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
                <order phase="Dispatch"/>
            </handler>
            <handler name="InstanceDispatcher"
                     class="org.apache.axis2.engine.InstanceDispatcher">
                <order phase="PostDispatch"/>
            </handler>
        </phase>
        <!--      user can add his own phases to this area  -->
        <phase name="OperationInFaultPhase"/>
    </phaseOrder>
	
    <phaseOrder type="Outfaultflow">
		<phase name="nodeInterceptorPhase" />
        <!--      user can add his own phases to this area  -->
        <phase name="OperationOutFaultPhase"/>
        <phase name="PolicyDetermination"/>
        <phase name="MessageOut"/>
    </phaseOrder>
</axisconfig>

<?xml version="1.0" encoding="UTF-8"?>


<module name="nodeInterceptor" class="ncl.qosp.modules.node.NodeModule">
   <inflow>
        <handler name="InFlowNodeHandler" class="ncl.qosp.modules.node.NodeDispatcher">
        <order phase="nodeInterceptorPhase" />
        </handler>
   </inflow>

   <outflow>
        <handler name="OutFlowNodeHandler" class="ncl.qosp.modules.node.NodeDispatcher">
        <order phase="nodeInterceptorPhase"/>					 
        </handler>
   </outflow>

   <Outfaultflow>
        <handler name="FaultOutFlowNodeHandler" class="ncl.qosp.modules.node.NodeDispatcher">
        <order phase="nodeInterceptorPhase"/>
        </handler>
   </Outfaultflow>

   <INfaultflow>
        <handler name="FaultInFlowNodeHandler" class="ncl.qosp.modules.node.NodeDispatcher">
        <order phase="nodeInterceptorPhase"/>
        </handler>
   </INfaultflow>
</module>

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

Reply via email to