wso2 / wso2-axis2-transports Goto Github PK
View Code? Open in Web Editor NEWLicense: Apache License 2.0
License: Apache License 2.0
Although the property transport.msmq.ContentType is defined in [1], it is not getting set in the receiver when reading messages.
As a result, in a scenario where we need to read messages with application/xml content type, it is not configurable and the XML message will be read as text/xml. Then the server expects the message to be enclosed in SOAP envelop, but if we have just a raw XML message, server cannot read it. It will give following error.
at org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.constructNode(StAXSOAPModelBuilder.java:305)
at org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.createOMElement(StAXSOAPModelBuilder.java:252)
at org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.createNextOMElement(StAXSOAPModelBuilder.java:234)
at org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:249)
at org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.getSOAPEnvelope(StAXSOAPModelBuilder.java:204)
at org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.<init>(StAXSOAPModelBuilder.java:154)
at org.apache.axiom.om.impl.AbstractOMMetaFactory.createStAXSOAPModelBuilder(AbstractOMMetaFactory.java:73)
at org.apache.axiom.om.impl.AbstractOMMetaFactory.createSOAPModelBuilder(AbstractOMMetaFactory.java:79)
at org.apache.axiom.om.OMXMLBuilderFactory.createSOAPModelBuilder(OMXMLBuilderFactory.java:196)
at org.apache.axis2.builder.SOAPBuilder.processDocument(SOAPBuilder.java:65)
at org.apache.axis2.format.TextMessageBuilderAdapter.processDocument(TextMessageBuilderAdapter.java:54)
at org.apache.axis2.format.TextMessageBuilderAdapter.processDocument(TextMessageBuilderAdapter.java:70)
at org.apache.axis2.format.TextMessageBuilderAdapter.processDocument(TextMessageBuilderAdapter.java:76)
at org.apache.axis2.transport.msmq.util.MSMQUtil.setSOAPEnvelope(MSMQUtil.java:73)
at org.apache.axis2.transport.msmq.MSMQMessageReceiver.processThroughEngine(MSMQMessageReceiver.java:98)
at org.apache.axis2.transport.msmq.MSMQMessageReceiver.onMessage(MSMQMessageReceiver.java:64)
at org.apache.axis2.transport.msmq.ServiceTaskManager.handleMessage(ServiceTaskManager.java:252)
at org.apache.axis2.transport.msmq.ServiceTaskManager.access$700(ServiceTaskManager.java:40)
at org.apache.axis2.transport.msmq.ServiceTaskManager$MessageListenerTask.run(ServiceTaskManager.java:235)
at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172)
The fix is to make use of the property [1] and if it is set in the proxy's configuration, use it as the receiver's message content type when reading messages.
Description:
When the variable SET_ROLLBACK_ONLY exist the message is deleted equally from the server.
<proxy xmlns="http://ws.apache.org/ns/synapse"
name="Rabbit_ReadMessage"
transports="rabbitmq"
startOnLoad="true">
<description/>
<target>
<inSequence>
---- Consume Message ----
</inSequence>
<faultSequence>
<property name="SET_ROLLBACK_ONLY" value="true" scope="axis2"/>
<log level="full" category="ERROR">
<property name="message" value="Message could not be delivered"/>
<property name="error_code" expression="$ctx:ERROR_CODE"/>
<property name="error_message" expression="$ctx:ERROR_MESSAGE"/>
<property name="error_detail" expression="$ctx:ERROR_DETAIL"/>
</log>
</faultSequence>
</target>
<parameter name="rabbitmq.queue.routing.key">Log</parameter>
<parameter name="rabbitmq.exchange.name">amq.direct</parameter>
<parameter name="rabbitmq.queue.name">LogQueue</parameter>
<parameter name="rabbitmq.connection.factory">AMQPConnectionFactory</parameter>
<parameter name="rabbitmq.message.content.type">application/xml</parameter>
</proxy>
With the variable SET_ROLLBACK_ONLY setted in the fault sequence, I expect that the message will not be removed, but it doesn't happen
Suggested Labels:
I suggest adding the tested following lines of code to the class RabbitMQMessageReceiver.java
Object o = msgContext.getProperty(BaseConstants.SET_ROLLBACK_ONLY);
if (o != null) {
if ((o instanceof Boolean && ((Boolean) o)) ||
(o instanceof String && Boolean.valueOf((String) o))) {
return false;
}
}
Suggested Assignees:
Affected Product Version:
axis2_transport_rabbitmq 2v22
OS, DB, other environment details and versions:
Windows, JDK 8
Steps to reproduce:
Related Issues:
wso2/product-ei#2210
product-ei
Description:
Currently, there is no way set the ContentTypeProperty globally. This is to support it by providing it from axis2.xml via JMSSender properties
Affected Product Version:
axis2-transports-1.1.1-wso2v2
Description:
There are no way to enable / disable TCP keepalive option for wso2 tcp listeners. This caused that wso2 leaves invalid TCP connections in ESTABLISHED state forever. Therefore I strongly propose use setKeepAlive() for Socket object in TCPServer.java before creating new TCP worker.
Affected Product Version:
WSO2-integrator 6.5.0
OS, DB, other environment details and versions:
Linux docker.
Description:
JMS_TYPE not work on send message
why use JMS_MESSAGE_TYPE to set jms type on sender, and use JMS_TYPE on get jms type
Suggested Labels:
support both of them
Suggested Assignees:
Affected Product Version:
OS, DB, other environment details and versions:
Steps to reproduce:
Related Issues:
This leads to throw the following exception
ERROR - NativeWorkerPool Uncaught exception
java.lang.NoClassDefFoundError: org/apache/camel/component/msmq/native_support/MsmqQueue
at org.apache.axis2.transport.msmq.util.MSMQCamelClient.open(MSMQCamelClient.java:100)
at org.apache.axis2.transport.msmq.MSMQSender.sendOverMSMQ(MSMQSender.java:144)
at org.apache.axis2.transport.msmq.MSMQSender.sendMessage(MSMQSender.java:93)
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.synapse.core.axis2.Axis2FlexibleMEPClient.send(Axis2FlexibleMEPClient.java:595)
at org.apache.synapse.core.axis2.Axis2Sender.sendOn(Axis2Sender.java:83)
at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.send(Axis2SynapseEnvironment.java:548)
at org.apache.synapse.endpoints.AbstractEndpoint.send(AbstractEndpoint.java:382)
at org.apache.synapse.endpoints.AddressEndpoint.send(AddressEndpoint.java:65)
at org.apache.synapse.mediators.builtin.SendMediator.mediate(SendMediator.java:121)
at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:97)
at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:59)
at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:158)
at org.apache.synapse.core.axis2.ProxyServiceMessageReceiver.receive(ProxyServiceMessageReceiver.java:213)
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
at org.apache.synapse.transport.passthru.ServerWorker.processEntityEnclosingRequest(ServerWorker.java:404)
at org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.java:151)
at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.ClassNotFoundException: org.apache.camel.component.msmq.native_support.MsmqQueue cannot be found by axis2-transport-msmq_1.0.0
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:501)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:421)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:412)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
Description:
unable to load the admin management console. can see following error in the wso2carbon log.
TID: [-1234] [] [2018-05-18 08:23:53,707] ERROR {org.apache.axis2.rpc.receivers.RPCMessageReceiver} - Exception occurred while trying to invoke service method getUserInfo
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.axis2.rpc.receivers.RPCUtil.invokeServiceClass(RPCUtil.java:178)
at org.apache.axis2.rpc.receivers.RPCMessageReceiver.invokeBusinessLogic(RPCMessageReceiver.java:117)
at org.apache.axis2.receivers.AbstractInOutMessageReceiver.invokeBusinessLogic(AbstractInOutMessageReceiver.java:40)
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.local.LocalTransportReceiver.processMessage(LocalTransportReceiver.java:169)
at org.apache.axis2.transport.local.LocalTransportReceiver.processMessage(LocalTransportReceiver.java:82)
at org.wso2.carbon.core.transports.local.CarbonLocalTransportSender.finalizeSendWithToAddress(CarbonLocalTransportSender.java:45)
at org.apache.axis2.transport.local.LocalTransportSender.invoke(LocalTransportSender.java:77)
at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:442)
at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:430)
at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:225)
at org.apache.axis2.client.OperationClient.execute(OperationClient.java:149)
at org.wso2.carbon.core.commons.stub.loggeduserinfo.LoggedUserInfoAdminStub.getUserInfo(LoggedUserInfoAdminStub.java:187)
at org.wso2.carbon.ui.AbstractCarbonUIAuthenticator.setUserAuthorizationInfo(AbstractCarbonUIAuthenticator.java:461)
at org.wso2.carbon.ui.AbstractCarbonUIAuthenticator.handleSecurity(AbstractCarbonUIAuthenticator.java:230)
at org.wso2.carbon.ui.BasicAuthUIAuthenticator.authenticate(BasicAuthUIAuthenticator.java:83)
at org.wso2.carbon.ui.CarbonUILoginUtil.handleLogin(CarbonUILoginUtil.java:380)
at org.wso2.carbon.ui.CarbonSecuredHttpContext.handleSecurity(CarbonSecuredHttpContext.java:244)
at org.eclipse.equinox.http.servlet.internal.ServletRegistration.service(ServletRegistration.java:60)
at org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAlias(ProxyServlet.java:128)
at org.eclipse.equinox.http.servlet.internal.ProxyServlet.service(ProxyServlet.java:68)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at org.wso2.carbon.tomcat.ext.servlet.DelegationServlet.service(DelegationServlet.java:68)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.wso2.carbon.ui.filters.CSRFPreventionFilter.doFilter(CSRFPreventionFilter.java:88)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.wso2.carbon.ui.filters.CRLFPreventionFilter.doFilter(CRLFPreventionFilter.java:59)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.wso2.carbon.tomcat.ext.filter.CharacterSetFilter.doFilter(CharacterSetFilter.java:61)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.wso2.carbon.tomcat.ext.valves.CompositeValve.continueInvocation(CompositeValve.java:99)
at org.wso2.carbon.tomcat.ext.valves.CarbonTomcatValve$1.invoke(CarbonTomcatValve.java:47)
at org.wso2.carbon.webapp.mgt.TenantLazyLoaderValve.invoke(TenantLazyLoaderValve.java:57)
at org.wso2.carbon.tomcat.ext.valves.TomcatValveContainer.invokeValves(TomcatValveContainer.java:47)
at org.wso2.carbon.tomcat.ext.valves.CompositeValve.invoke(CompositeValve.java:62)
at org.wso2.carbon.tomcat.ext.valves.CarbonStuckThreadDetectionValve.invoke(CarbonStuckThreadDetectionValve.java:159)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
at org.wso2.carbon.tomcat.ext.valves.CarbonContextCreatorValve.invoke(CarbonContextCreatorValve.java:57)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1074)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1739)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1698)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.ThreadDeath
at java.lang.Thread.stop(Thread.java:853)
at org.wso2.carbon.tomcat.ext.valves.CarbonStuckThreadDetectionValve.handleStuckThread(CarbonStuckThreadDetectionValve.java:125)
at org.wso2.carbon.tomcat.ext.valves.CarbonStuckThreadDetectionValve.backgroundProcess(CarbonStuckThreadDetectionValve.java:178)
at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1368)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1546)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1556)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1524)
... 1 more
Suggested Labels:
Suggested Assignees:
Affected Product Version:
wso2is 5.1.0
OS, DB, other environment details and versions:
Linux, H2
Steps to reproduce:
Related Issues:
Description:
JMSConstants.PARAM_RECON_MAX_DURATION is read from configuration. After NOT NULL check, it's value gets overriden by JMSConstants.JMS_PROXY_THROTTLE_PER_MIN which cause
java.lang.NullPointerException: Cannot invoke "java.lang.Integer.intValue()" because "value" is null
if jms.proxy.throttle.limitPerMinute is not defined.
Affected line of code:
Description:
Found below issues in Axis2 RabbitMQ Transport,
public RabbitMQConnectionPool(RabbitMQConnectionFactory factory, int poolSize) {
super(factory);
this.setTestOnBorrow(true);
this.setMaxTotal(poolSize);
this.setMaxTotalPerKey(poolSize);
}
[transport.rabbitmq]
sender_enable = true
listener_enable = true
[[transport.rabbitmq.listener]]
name = "AMQPConnectionFactory"
parameter.hostname = "localhost"
parameter.port = 5672
parameter.username = "guest"
parameter.password = "guest"
parameter.retry_interval = "10s"
parameter.retry_count = 5
parameter.connection_pool_size = 100
Please follow the below steps to reproduce the above mentioned issues.
Thank you,
Pasindu G.
Description:
The class JMSMessageSender set delivery mode as PERSISTENCE without considering the delivery mode received in the request.
Please refer :
Affected Product Version:
axis2-transports-1.1.1-wso2v2
OS, DB, other environment details and versions:
N/A
Steps to reproduce:
Send a JMS message request with the property to set JMS.DeliveryMode to Non-Persistence.
The delivery mode will still be set as Persistence.
Hello everyone!
When I was using the wso2 (1.9.0) component, my jvm thread number has been growing, and now it has reached more than 2,000. In the end, too many threads will cause memory overflow. I have a limit on the configuration file "passthru-http.properties", but it has no effect. Has anyone encountered such a situation?
Description:
The code in [1] only clears the map which holds JMS connections when there are any issues with connections. We need to close individual connections as well. Otherwise, those connections will be kept as it is at the JMS server side and consume resources.
/**
* Clear the shared connection map due to stale connections
*/
private synchronized void clearSharedConnections() {
sharedConnectionMap.clear();
lastReturnedConnectionIndex = 0;
}
Description:
The initiative was to deactivate the idle tasks after checking the number of polling iterations by using the "transport.jms.IdleTaskLimit" property.
Setup a WSO2 EI 6.1.1 instance with ActiveMQ and used following proxy service in order to test the behavior of the property.
<?xml version="1.0" encoding="UTF-8"?><proxy xmlns="http://ws.apache.org/ns/synapse" name="JmsProxy" startOnLoad="true" statistics="disable" trace="disable" transports="jms">
<target>
<inSequence>
<property name="OUT_ONLY" value="true"/>
<property name="FORCE_SC_ACCEPTED" scope="axis2" value="true"/>
<drop/>
</inSequence>
</target>
<parameter name="transport.jms.Destination">sampleQueue</parameter>
<parameter name="transport.jms.ConcurrentConsumers">5</parameter>
<parameter name="transport.jms.MaxConcurrentConsumers">10</parameter>
<parameter name="transport.jms.IdleTaskLimit">4</parameter>
<description/>
</proxy>
With the following configurations, I observed the concurrent consumer count from the ActiveMQ management console and identified that the concurrent consumer count is not decreasing when we set the transport.jms.ConcurrentConsumers
property value to 1.
<parameter name="transport.jms.Destination">sampleQueue</parameter>
<parameter name="transport.jms.ConcurrentConsumers">1</parameter>
<parameter name="transport.jms.MaxConcurrentConsumers">10</parameter>
<parameter name="transport.jms.IdleTaskLimit">4</parameter>
But when we set the transport.jms.ConcurrentConsumers
property value to a value other than 1, tasks are deactivated once the load is decreasing and work as expected.
Furthermore, In the following code, I identified that the implemented logic does not work as expected with the IdleTaskCount when we set the ConcurrentConsumers as 1.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.