erica peters created AXIS2-5739:
-----------------------------------

             Summary: calling ServiceClient.fireAndForget and receiving 
java.lang.NoSuchMethodError getMessageFormatter
                 Key: AXIS2-5739
                 URL: https://issues.apache.org/jira/browse/AXIS2-5739
             Project: Axis2
          Issue Type: Bug
          Components: transports
    Affects Versions: 1.7.0
         Environment: linux
            Reporter: erica peters
            Priority: Critical


We are trying to upgrade to the newest version of wso2as.  However, we are 
unable to send asynchronous messages based on the following errors received 
(code source will be at the bottom):

TID: [-1] [] [2016-02-04 12:31:07,912]  WARN 
{org.apache.axis2.transport.base.TransportMBeanSupport} -  Error registering a 
MBean with objectname ' 
org.apache.axis2:Type=Transport,ConnectorName=jms-sender ' for JMX management 
{org.apache.axis2.transport.base.TransportMBeanSupport}
javax.management.InstanceAlreadyExistsException: 
org.apache.axis2:Type=Transport,ConnectorName=jms-sender
        at com.sun.jmx.mbeanserver.Repository.addMBean(Repository.java:437)
        at 
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerWithRepository(DefaultMBeanServerInterceptor.java:1898)
        at 
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerDynamicMBean(DefaultMBeanServerInterceptor.java:966)
        at 
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerObject(DefaultMBeanServerInterceptor.java:900)
        at 
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerMBean(DefaultMBeanServerInterceptor.java:324)
        at 
com.sun.jmx.mbeanserver.JmxMBeanServer.registerMBean(JmxMBeanServer.java:522)
        at 
org.apache.axis2.transport.base.TransportMBeanSupport.register(TransportMBeanSupport.java:91)
        at 
org.apache.axis2.transport.base.AbstractTransportSender.init(AbstractTransportSender.java:84)
        at org.apache.axis2.transport.jms.JMSSender.init(JMSSender.java:63)
        at 
org.apache.axis2.context.ConfigurationContextFactory.initTransportSenders(ConfigurationContextFactory.java:300)
        at 
org.apache.axis2.context.ConfigurationContextFactory.init(ConfigurationContextFactory.java:231)
        at 
org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContext(ConfigurationContextFactory.java:93)
        at 
org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContextFromFileSystem(ConfigurationContextFactory.java:210)
        at 
com.solers.espds.util.messaging.ServiceClientPoolFactory.create(ServiceClientPoolFactory.java:50)
        at 
com.solers.espds.util.messaging.ServiceClientPoolFactory.create(ServiceClientPoolFactory.java:24)
        at 
org.apache.commons.pool2.BasePooledObjectFactory.makeObject(BasePooledObjectFactory.java:60)
        at 
org.apache.commons.pool2.impl.GenericObjectPool.create(GenericObjectPool.java:868)
        at 
org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:435)
        at 
org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:363)
        at 
com.solers.espds.util.messaging.ServiceInvoker.deliverSync(ServiceInvoker.java:292)
        at 
com.solers.espds.cim.userProfile.comm.UserManagerApi.getUserByLogin(UserManagerApi.java:1467)
        at 
com.solers.espds.cim.dataIntake.userManager.PdaUserManager.getUserGroup(PdaUserManager.java:297)
        at 
com.solers.espds.cim.dataIntake.userManager.PdaUserManager.hasAccess(PdaUserManager.java:312)
        at 
com.solers.espds.cim.dataIntake.userManager.PdaUserManager.authenticate(PdaUserManager.java:92)
        at 
com.solers.espds.cim.dataIntake.sftpServer.PdaSftpServer$1.authenticate(PdaSftpServer.java:215)
        at 
org.apache.sshd.server.auth.UserAuthPassword.checkPassword(UserAuthPassword.java:55)
        at 
org.apache.sshd.server.auth.UserAuthPassword.auth(UserAuthPassword.java:49)
        at 
org.apache.sshd.server.session.ServerSession.userAuth(ServerSession.java:406)
        at 
org.apache.sshd.server.session.ServerSession.handleMessage(ServerSession.java:215)
        at 
org.apache.sshd.common.session.AbstractSession.decode(AbstractSession.java:566)
        at 
org.apache.sshd.common.session.AbstractSession.messageReceived(AbstractSession.java:236)
        at 
org.apache.sshd.common.AbstractSessionIoHandler.messageReceived(AbstractSessionIoHandler.java:58)
        at 
org.apache.mina.core.filterchain.DefaultIoFilterChain$TailFilter.messageReceived(DefaultIoFilterChain.java:716)
        at 
org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)
        at 
org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:46)
        at 
org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:796)
        at 
org.apache.mina.core.filterchain.IoFilterAdapter.messageReceived(IoFilterAdapter.java:119)
        at 
org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)
        at 
org.apache.mina.core.filterchain.DefaultIoFilterChain.fireMessageReceived(DefaultIoFilterChain.java:426)
        at 
org.apache.mina.core.polling.AbstractPollingIoProcessor.read(AbstractPollingIoProcessor.java:697)
        at 
org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:651)
        at 
org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:640)
        at 
org.apache.mina.core.polling.AbstractPollingIoProcessor.access$600(AbstractPollingIoProcessor.java:67)
        at 
org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:1111)
        at 
org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)


TID: [-1234] [] [2016-02-08 12:21:01,817] ERROR 
{org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver} -  
org.apache.axis2.transport.TransportUtils.getMessageFormatter(Lorg/apache/axis2/context/MessageContext;)Lorg/apache/axis2/transport/MessageFormatter;
 {org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver}
java.lang.NoSuchMethodError: 
org.apache.axis2.transport.TransportUtils.getMessageFormatter(Lorg/apache/axis2/context/MessageContext;)Lorg/apache/axis2/transport/MessageFormatter;
        at 
org.apache.axis2.transport.jms.JMSSender.createJMSMessage(JMSSender.java:328)
        at 
org.apache.axis2.transport.jms.JMSSender.sendOverJMS(JMSSender.java:159)
        at 
org.apache.axis2.transport.jms.JMSSender.sendMessage(JMSSender.java:141)
        at 
org.apache.axis2.transport.base.AbstractTransportSender.invoke(AbstractTransportSender.java:112)
        at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:442)
        at 
org.apache.axis2.description.OutOnlyAxisOperationClient.executeImpl(OutOnlyAxisOperation.java:297)
        at 
org.apache.axis2.client.OperationClient.execute(OperationClient.java:149)
        at 
org.apache.axis2.client.ServiceClient.fireAndForget(ServiceClient.java:511)
        at 
com.solers.espds.util.messaging.ServiceInvoker.deliverAsync(ServiceInvoker.java:259)
        at 
com.solers.espds.cim.schedule.comm.ScheduleManagerApi.createDataIntakeEvent(ScheduleManagerApi.java:109)
        at 
com.solers.espds.cim.dataIntake.FtpClientManager.pullFile(FtpClientManager.java:367)
        at 
com.solers.espds.cim.dataIntake.comm.FtpClientManagerListener.pullFile(FtpClientManagerListener.java:42)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at 
org.apache.axis2.rpc.receivers.RPCUtil.invokeServiceClass(RPCUtil.java:212)
        at 
org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver.invokeBusinessLogic(RPCInOnlyMessageReceiver.java:66)
        at 
org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:110)
        at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
        at 
org.apache.axis2.transport.base.AbstractTransportListener.handleIncomingMessage(AbstractTransportListener.java:328)
        at 
org.apache.axis2.transport.jms.JMSMessageReceiver.processThoughEngine(JMSMessageReceiver.java:196)
        at 
org.apache.axis2.transport.jms.JMSMessageReceiver.onMessage(JMSMessageReceiver.java:122)
        at 
org.apache.axis2.transport.jms.ServiceTaskManager$MessageListenerTask.handleMessage(ServiceTaskManager.java:518)
        at 
org.apache.axis2.transport.jms.ServiceTaskManager$MessageListenerTask.run(ServiceTaskManager.java:430)
       at 
org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:58)
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)


Code Source:
        public void deliverAsync(Message message) {
                ServiceClient serviceClient = null;
                try {
                        String namespace = namespaceMapping.get(this.endpoint);
                        String endpointName = endpointMapping.get("async" + 
this.endpoint);
                        
                        serviceClient = scp.borrowObject();
                        // for endpoints not in PDA Properties
                        if (endpointName == null) {
                                endpointName = 
endpointMapping.get(this.endpoint);
                        }

                        if (message.get("ZONE") != null) {
                                String queue = endpointName.substring(0, 
endpointName.indexOf("?")) + "ProxyCBR";
                                String transportInfo = 
endpointName.substring(endpointName.indexOf("?"));
                                endpointName = queue + transportInfo;
                        }

                        if (endpointName.startsWith("jms")) {
                                if (priorityAsync != null) {
                                        
serviceClient.getOptions().setProperty(JMSConstants.JMS_PRIORITY, 
priorityAsync);
                                }
                                if (timeToLiveAsync != null) {
                                        
serviceClient.getOptions().setProperty(JMSConstants.JMS_TIME_TO_LIVE, 
timeToLiveAsync);
                                }
                                if (deliveryModeAsync != null) {
                                        
serviceClient.getOptions().setProperty(JMSConstants.JMS_DELIVERY_MODE, 
deliveryModeAsync);
                                }
                        }

                        // Add the operation to it.
                        AxisOperation operation = new OutOnlyAxisOperation();
                        operation.setName(new QName(namespace, this.action, 
prefix));
                        serviceClient.getAxisService().addOperation(operation);

                        // Set the endpoint and action.
                        serviceClient.getOptions().setTo(new 
EndpointReference(endpointName));
                        
serviceClient.getOptions().setProperty(org.apache.axis2.Constants.Configuration.MESSAGE_TYPE,
 messageType);

                        // Add the message to the SOAP message.
                        OMFactory omFactory = OMAbstractFactory.getOMFactory();
                        OMElement actionElement = 
omFactory.createOMElement(this.action, null);
                        // Grab the root element
                        actionElement.addChild(message.wso2());
                        actionElement.setNamespace(new 
OMNamespaceImpl(namespace, prefix));

                        LoggingAndReport.debug(ServiceInvoker.class.getName(), 
"deliverAsync", "endpointName: " + endpointName);
                        LoggingAndReport.debug(ServiceInvoker.class.getName(), 
"deliverAsync", "action: " + this.action);

                        // Send the message.
                        serviceClient.fireAndForget(new QName(namespace, 
this.action, prefix), actionElement);
                        Thread.sleep(1000);
                        omFactory = null;
                        actionElement = null;
                        operation = null;
                } catch (Exception ex) {
                        LoggingAndReport.error(ServiceInvoker.class.getName(), 
"deliverAsync", GeneralUtils.getStackTrace(ex));
                }
                finally{
                        //Cleanup Connection if necessary
                        try {
                                serviceClient.cleanupTransport();
                                scp.returnObject(serviceClient);
                        } catch (AxisFault e) {
                                e.printStackTrace();
                        }
                }
}

The error in the logs is a java.lang.NoSuchMethodError.  The TransportUtils, 
MessageContext and MessageFormatter class files all exist in both the wso2v6 
and wso2v14 version of the axis2 jar.  

Since the error is referencing TransportUtils, I went ahead and reverse 
engineered both versions of that class file.  The getMessageFormatter method 
does NOT exist in the wso2v14 version of the TransportUtils class.  That being 
said, I do see where it exists now (BaseUtils) but it's the code from within 
axis2 that is failing.  I cannot make the change.





--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to