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]