Author |
Message
|
deecee |
Posted: Tue Sep 06, 2016 6:29 am Post subject: SOAPInput node with Apache Server |
|
|
Acolyte
Joined: 11 Sep 2014 Posts: 51
|
Hi,
I am using IIB 10.0.0.1
I have a simple test flow,
soapinput node -> soapreply node
I am using SOAPInput node in the 'operate in gateway mode', i.e. without a WSDL.
I have enabled broker wide listeners for the SOAP nodes.
I have deployed the flow and can test it on my local broker with the new default port.
But when I try to test it using the Apache Server, I get the below error
Code: |
A Java exception was thrown whilst calling the Java JNI method ''TomcatNodeRegistrationUtil_getDataFromHTTP''. The Java exception was ''java.lang.StringIndexOutOfBoundsException''. The Java stack trace was ''Frame : 0 java.lang.StringIndexOutOfBoundsException: null
@: java.lang.String.substring(String.java:1256)
@: com.ibm.broker.inlinehttp.tomcatthreadpool.BrokerListenerInstanceManager.getWorkInProgress(Unknown Source)
@: com.ibm.broker.axis2.TomcatNodeRegistered.getWorkInProgress(Unknown Source)
@: com.ibm.broker.axis2.TomcatNodeRegistrationUtil.getDataFromHTTP(Unknown Source)
''. |
Can anyone help. |
|
Back to top |
|
 |
vishBroker |
Posted: Tue Sep 06, 2016 10:48 am Post subject: |
|
|
Centurion
Joined: 08 Dec 2010 Posts: 135
|
StringIndexOutOfBound error suggests - there COULD be some issue with the URL being used.
what are the URLs you are using - are they same. (I hope them to be).
Can you check the URI httpConnector is listening on by running mqsireportproperties command. |
|
Back to top |
|
 |
vishBroker |
Posted: Tue Sep 06, 2016 10:57 am Post subject: |
|
|
Centurion
Joined: 08 Dec 2010 Posts: 135
|
And - the request? Is it same?
ArrayOutOfBound could be because of wrong input as well. |
|
Back to top |
|
 |
deecee |
Posted: Wed Sep 07, 2016 12:01 am Post subject: |
|
|
Acolyte
Joined: 11 Sep 2014 Posts: 51
|
Hi,
I am using the same URI's
it's /proxyservlet
The message is same too, it works when hit directly. Only gives this error when I try through Apache.
I have tried the same with HTTP nodes, and it works right.
How do I check the URI, these are properties for my HTTPConnector
Quote: |
HTTPConnector
uuid='HTTPConnector'
address=''
port='7080'
maxPostSize=''
acceptCount=''
compressableMimeTypes=''
compression=''
connectionLinger=''
connectionTimeout=''
maxHttpHeaderSize=''
maxKeepAliveRequests='0'
maxThreads=''
minSpareThreads=''
noCompressionUserAgents=''
restrictedUserAgents=''
socketBuffer=''
tcpNoDelay='true'
enableLookups='false'
serverName=''
corsEnabled='false'
corsAllowOrigins='*'
corsAllowCredentials='false'
corsExposeHeaders='Content-Type'
corsMaxAge='-1'
corsAllowMethods='GET,HEAD,POST,PUT,PATCH,DELETE,OPTIONS'
corsAllowHeaders='Accept,Accept-Language,Content-Language,Content-Type' |
|
|
Back to top |
|
 |
mqjeff |
Posted: Wed Sep 07, 2016 3:43 am Post subject: |
|
|
Grand Master
Joined: 25 Jun 2008 Posts: 17447
|
Check the URL that Apache is building, or sending to IIB.
Check the configuration of Apache. You have determined that your IIB configuration is correct, because you can use the URL from a browser.
You need to troubleshoot your Apache configuration. Look at any debug/tracing that Apache uses. Also look for the instructions in the IIB KC about using an external HTTP server. _________________ chmod -R ugo-wx / |
|
Back to top |
|
 |
deecee |
Posted: Fri Sep 09, 2016 5:43 am Post subject: |
|
|
Acolyte
Joined: 11 Sep 2014 Posts: 51
|
I checked the apache logs, and this is what it says,
Quote: |
20160909133608.896 38 } BrokerConnection findEntryThatMatchesOurURL
20160909133608.896 38 WBIMBServlet processPost Testing reply queue existence
20160909133608.897 38 WBIMBServlet processPost Sending data to DFE length=5719
20160909133608.898 38 WBIMBServlet putMQMessageToQueue trying to put message
20160909133608.899 38 WBIMBServlet putMQMessageToQueue put message successfully
20160909133608.899 38 WBIMBServlet processPost waiting for reply from DFE
20160909133612.542 37 WBIMBServlet processPost Exception uncaught mqe.toString()=com.ibm.mq.MQException: MQJE001: Completion Code '2', Reason '2033'.
20160909133612.542 37 WBIMBServlet processPost Timeout on MQGET - generating SOAP Fault message statusCode=504
20160909133612.543 37 WBIMBServlet processPost Returning connection to the pool
20160909133612.543 37 BrokerConnectionPool putBrokerConnection Releasing connection (updating last-used time) |
I see that the 180 timeout is to set in SOAPinput, and that I have increased.
I have also disabled firewalls. |
|
Back to top |
|
 |
mqjeff |
Posted: Fri Sep 09, 2016 5:55 am Post subject: |
|
|
Grand Master
Joined: 25 Jun 2008 Posts: 17447
|
|
Back to top |
|
 |
deecee |
Posted: Fri Sep 09, 2016 6:14 am Post subject: |
|
|
Acolyte
Joined: 11 Sep 2014 Posts: 51
|
Quote: |
It has, probably, to do with how long your SOAP flow takes to finish. |
The SOAP flow is only SOAPInput ->SOAPReply, and the error occurs at the very beginning of invoking this flow. The debugger doesn't even reach the first break-point. |
|
Back to top |
|
 |
vishBroker |
Posted: Fri Sep 09, 2016 6:23 am Post subject: |
|
|
Centurion
Joined: 08 Dec 2010 Posts: 135
|
deecee wrote: |
Quote: |
It has, probably, to do with how long your SOAP flow takes to finish. |
The SOAP flow is only SOAPInput ->SOAPReply, and the error occurs at the very beginning of invoking this flow. The debugger doesn't even reach the first break-point. |
Check the validations that you are doing on the input node.
If you are able to hit the flow successfully from browser/SOAPUI but not from the apache - I think, it has to do with the input.
have you made sure, the apache request reaches the flow?
A quick way is to have a dummy flow - just to rule out network issue. |
|
Back to top |
|
 |
deecee |
Posted: Fri Sep 09, 2016 6:31 am Post subject: |
|
|
Acolyte
Joined: 11 Sep 2014 Posts: 51
|
The SOAPInput has no validations, it is also running on gateway mode, hence no WSDL validations also.
I have run the same set-up for a flow = HTTPInput ->HttpReply and invoked it using apache. This works as expected.
Quote: |
A quick way is to have a dummy flow - just to rule out network issue. |
Can you explain what you mean by this? |
|
Back to top |
|
 |
Vitor |
Posted: Fri Sep 09, 2016 6:45 am Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
deecee wrote: |
Quote: |
It has, probably, to do with how long your SOAP flow takes to finish. |
The SOAP flow is only SOAPInput ->SOAPReply, and the error occurs at the very beginning of invoking this flow. The debugger doesn't even reach the first break-point. |
Don't the listeners use MQ internally for staging requests? _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
mqjeff |
Posted: Fri Sep 09, 2016 6:46 am Post subject: |
|
|
Grand Master
Joined: 25 Jun 2008 Posts: 17447
|
Vitor wrote: |
deecee wrote: |
Quote: |
It has, probably, to do with how long your SOAP flow takes to finish. |
The SOAP flow is only SOAPInput ->SOAPReply, and the error occurs at the very beginning of invoking this flow. The debugger doesn't even reach the first break-point. |
Don't the listeners use MQ internally for staging requests? |
The bipListener does... the EG listeners don't.
Not sure what the Servlet uses - but again if it's Apache, you should be using the config option and not the servlet. _________________ chmod -R ugo-wx / |
|
Back to top |
|
 |
Vitor |
Posted: Fri Sep 09, 2016 7:11 am Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
mqjeff wrote: |
The bipListener does... the EG listeners don't. |
deecee wrote: |
I have enabled broker wide listeners for the SOAP nodes. |
_________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
deecee |
Posted: Fri Sep 09, 2016 9:11 am Post subject: |
|
|
Acolyte
Joined: 11 Sep 2014 Posts: 51
|
Quote: |
but again if it's Apache, you should be using the config option and not the servlet. |
Is there a reason for this? Because the broker seems to have good amount of documentation to use the servlet for integrating with Apache. |
|
Back to top |
|
 |
mqjeff |
Posted: Fri Sep 09, 2016 9:43 am Post subject: |
|
|
Grand Master
Joined: 25 Jun 2008 Posts: 17447
|
deecee wrote: |
Quote: |
but again if it's Apache, you should be using the config option and not the servlet. |
Is there a reason for this? Because the broker seems to have good amount of documentation to use the servlet for integrating with Apache. |
The servlet is a Java Servlet.. You have to run it in something that lets you run Java Servlets.
AFAIK, the plain Apache webserver doesn't let you run servlets.
The mod-proxy/etc is also lighter weight and faster. _________________ chmod -R ugo-wx / |
|
Back to top |
|
 |
|