Hello again everyone,
Here is the problem
.NET web service(no security or SSL/HTTPS, anything like that) ---------> I
generate Axis2 ADB stub classes from wsdl and create a .jar with all stubs
I then created test desktop client which references the .jar containing the
generated stubs and run a performance test by running a loop of 100
successive calls to the .createUser method on my stub class. All works fine
and test runs and I see that the .NET web service has created the 100 users
in it's db as expected.
I then create a java class and build it into an .aar and deploy to my tomcat
which contains a wrapper method .createUser. This class references the same
.jar containing my generated stubs to the .net service as before, and simply
passes parameters given to it via my tomcat service to the stubs to pass
along to the .net service.
So here is the chain:
desktop client -------> My tomcat Axis2 web service (including referenes
to stub .jar classes) ----> .NET web service
This works fine if i call it once. call it a few times. But if I have the
desktop client make 100 sucessive calls to my service, then an error is
throws after about 12-18 calls. This occurs whether I have a rapid loop or
if I put a 5 second delay between each call.
here is the logs of the errors on my tomcat server:( passed the exception
through a recursive function that stacktraces all child exceptions like so:
void recurseErrors(Throwable ex){
Logger.getLogger(AbstractUserManager.class.getName()).log(Level.SEVERE,
null, ex);
Logger.getLogger(AbstractUserManager.class.getName()).log(Level.SEVERE,
"********************************\n");
if(!(ex.getCause() == null)){
recurseErrors(ex.getCause());
}
}
LOGS:
SEVERE: null
org.apache.axis2.AxisFault: Transport error: 403 Error: Access Forbidden
at
org.apache.axis2.transport.http.HTTPSender.handleResponse(HTTPSender.java:29
8)
at
org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:192)
at
org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:77)
at
org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithC
ommons(CommonsHTTPTransportSender.java:327)
at
org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTT
PTransportSender.java:206)
at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:396)
at
org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperatio
n.java:374)
at
org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisO
peration.java:211)
at
org.apache.axis2.client.OperationClient.execute(OperationClient.java:163)
at
com.org.mleadr.ws.casjobs.proxies.UsersStub.CreateAccount(UsersStub.java:208
)
at
com.org.mleadr.users.AbstractUserManager.createUser(AbstractUserManager.java
:119)
at
com.org.mleadr.ws.services.UserService.createUser(UserService.java:76)
at sun.reflect.GeneratedMethodAccessor29.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl
.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.apache.axis2.rpc.receivers.RPCUtil.invokeServiceClass(RPCUtil.java:194)
at
org.apache.axis2.rpc.receivers.RPCMessageReceiver.invokeBusinessLogic(RPCMes
sageReceiver.java:98)
at
org.apache.axis2.receivers.AbstractInOutMessageReceiver.invokeBusinessLogic(
AbstractInOutMessageReceiver.java:40)
at
org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageRe
ceiver.java:96)
at
org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:145)
at
org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HT
TPTransportUtils.java:275)
at
org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:120)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:290)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:206)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja
va:233)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.ja
va:175)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128
)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102
)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java
:109)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http
11Protocol.java:584)
at
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
May 13, 2008 1:55:34 PM com.org.mleadr.users.AbstractUserManager
recurseErrors
SEVERE: ********************************
May 13, 2008 1:55:34 PM com.org.mleadr.ws.services.UserService createUser
SEVERE: null
org.apache.axis2.AxisFault: Transport error: 403 Error: Access Forbidden
at
org.apache.axis2.transport.http.HTTPSender.handleResponse(HTTPSender.java:29
8)
at
org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:192)
at
org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:77)
at
org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithC
ommons(CommonsHTTPTransportSender.java:327)
at
org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTT
PTransportSender.java:206)
at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:396)
at
org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperatio
n.java:374)
at
org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisO
peration.java:211)
at
org.apache.axis2.client.OperationClient.execute(OperationClient.java:163)
at
com.org.mleadr.ws.casjobs.proxies.UsersStub.CreateAccount(UsersStub.java:208
)
at
com.org.mleadr.users.AbstractUserManager.createUser(AbstractUserManager.java
:119)
at
com.org.mleadr.ws.services.UserService.createUser(UserService.java:76)
at sun.reflect.GeneratedMethodAccessor29.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl
.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.apache.axis2.rpc.receivers.RPCUtil.invokeServiceClass(RPCUtil.java:194)
at
org.apache.axis2.rpc.receivers.RPCMessageReceiver.invokeBusinessLogic(RPCMes
sageReceiver.java:98)
at
org.apache.axis2.receivers.AbstractInOutMessageReceiver.invokeBusinessLogic(
AbstractInOutMessageReceiver.java:40)
at
org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageRe
ceiver.java:96)
at
org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:145)
at
org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HT
TPTransportUtils.java:275)
at
org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:120)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:290)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:206)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja
va:233)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.ja
va:175)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128
)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102
)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java
:109)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http
11Protocol.java:584)
at
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
I have searched and searched, tweaked and tweaked and tried to find any hint
as tot he problem. A dozen people have looked at other posts I've had and
went into explanations of how to do security because of the 403 error...that
is NOT the problem. The .net service is NOT throwing an exception, and if
it was a security issue, it would happen on the first call..not the 12th or
so. The .net service is NOT using any security.
I believe there is some resource conflict, possibly due to using the same
port with my generated stubs. But if that is the case, shouldnt' it occur
whether I am using it from a desktop client or within my web service itself?
I mean, in either case I am simply creating a class and calling a method
that is a stub to the .net service. I think it is an issue that is caused
by using proxy stub classes to another web service within my webservice
inside of tomcat/axis2 and some poor interaction therein
As an additional test i generated proxies using the JAX-WS toolkit fot he
.net service and referenced that jar in my service and had a similar
performance. A different error though("unable to post to server"). Again
with these generated proxies, I was able to reference them and run the 100
loop test in a java desktop client no problems, but make 100 calls to my
service referencing those proxies and error. So similar performance using 2
seperately generated sets fo stubs/proxies to the .net service when trying
to access as a pass through from within my tomcat/axis2 service.
I have tried configuring memory, maxthreads with no luck. I didn't think it
would help, but nothing else has.
I eagerly await any suggestions or questions about this as I have been
trying to resolve this for weeks.
Thanks,
Chris