I developed an web service client using axis2. The code has no problems. When i execute the ws client in a windows SS i obtain the answer in 1-2 seconds. But when i put the client in a "iSeries- AS/400 V5R3" the time to obtain an answer is 20 minutes. This is a big difference for the same code in two different operative system. Someone can help me?
On your way in you may have missed that we have a policy on screen names here at JavaRanch. Basically, it must consist of a first name, a space, and a last name, and not be obviously fictitious. Since yours does not conform with it, please take a moment to change it, which you can do right here.
As to your question, what timings have you done? If the web services accesses any other systems, are those calls as fast as they are from Windows? How does the time spent in the actual web service class compare to the overall roundtrip time?
Joined: Nov 03, 2007
Sorry for Name, but AFTAS is the first words of my real name.
Sorry but i don't understand very well your question. The client access a web service, that is only accessible via private network. We need to configure a proxy to access them. Every calls that i execute in a windows operative system is very fast. Every calls that i execute in a AS/400 operative system is very slow.
Thanks for your support.
Joined: Mar 22, 2005
You have determined that the WS running on the AS/400 is slower than the same WS running on Windows. Now you need to figure out why that is so.
Usually, a WS accesses other systems like databases or some other backend system. So the next step is to find out if those calls from the AS/400 are slower, or if they're the same as if called from Windows. So you need to measure those calls, in order to see of they're slower as if being accessed by a Windows system.
It's also possible that there are network issues. To abstract those away, you need to measure the time from when the WS call arrives at the Java code of the As/400 until it exits the Java code on the AS/400. That way, any network issues won't be an issue.
Axis2 requires Java SE 5.0 - so also experimenting with a J2SE 1.4 based toolkit may help to shed some light on the issue. In any case - you may want to setup an experimental configuration where you have an off-base "echo" web service server and a minimal on-base web service client; that way any time penalties on the client side should be limited to networking and XML (un)marshalling. Once you have some results you can design other performance experiments to pinpoint the exact bottleneck. [ November 05, 2007: Message edited by: Peer Reynders ]
Joined: Nov 03, 2007
Thanks for your help.
I already find the solution.
I only need no add the following code to my class: String keystoreLocation = "/QIBM/ProdData/Java400/jdk14/lib/security/cacerts"; System.setProperty("javax.net.ssl.trustStore", keystoreLocation); System.setProperty("javax.net.ssl.KeyStore", keystoreLocation); System.setProperty("javax.net.ssl.trustStorePassword", "MY_PASS"); System.setProperty("javax.net.ssl.keyStorePassword", "MY_PASS"); System.setProperty("java.protocol.handler.pkgs", "com.ibm.net.ssl.internal.www.protocol");
and the tme reduce from 20 minutes to +/- 10 seconds.