Ok. I think I figured out how to fix this, but we are
in the process of testing it to make sure. If we get it fixed, I will post
the answer.
Thank you,
Larry M. Lemons
(304) 726-4809 Ext. 4505
From: Larry Lemons [mailto:[EMAIL PROTECTED]
Sent: Thursday, August 17, 2006 9:28 AM
To: [email protected]
Subject: RE: Using the Generated Classes in an Applet Through a Proxy Server
Does anyone have any ideas at all for this
problem?
Thank you,
Larry M. Lemons
(304) 726-4809 Ext. 4505
From: Larry Lemons [mailto:[EMAIL PROTECTED]
Sent: Tuesday, August 15, 2006 10:16 AM
To: [email protected]
Subject: RE: Using the Generated Classes in an Applet Through a Proxy Server
I forgot to mention that I am using the JAVA 1.5_07 for
building the Stubs and java 1.5_0X for the applet use. I'm also using the
WSDL2JAVA version 1.2. (I didn't realize we were using such an old
version.)
Thank you,
Larry M. Lemons
(304) 726-4809 Ext. 4505
From: Larry Lemons [mailto:[EMAIL PROTECTED]
Sent: Monday, August 14, 2006 2:36 PM
To: [email protected]
Subject: Using the Generated Classes in an Applet Through a Proxy Server
I have an applet
that communicates with a web service using a few different web
methods. The applet connects fine and even uses the web methods fine as
long as the client isn't behind a proxy server.
As soon as the
applet is used behind a proxy server, it breaks. The applet is able to
connect to the Web Service, but as soon as it attempts to use one of the web
methods, it breaks. What I have seen is the following:
When connecting to
and using the applet from outside of a firewall, it uses proxy=DIRECT
everywhere.
As soon as the
applet is moved behind the firewall, all the connections are created
successfully using proxy=HTTP @
/IPADDRESS:PORT
But when it actually gets to doing the web
method call, after doing the _call.invoke(param1, param2, param3, etc.), it gets
to this call:
liveconnect: Invoking JS method: execScript
liveconnect: Invoking JS method: evalIntermediateValueToReturn
network: Connecting socket://fema.imcwv.com:443 with proxy=DIRECT
It uses a socket and
the URL in a String format with port 443, which is correct. The same call
outside of the proxy server is the following:
network: Connecting socket://URL_STRING:443 with proxy=DIRECT
The difference is
the result for the two. Outside of the proxy server the result is the
expected:
network: Connecting http://URL_STRING/java/lang/StringBeanInfo.class with proxy=DIRECT
network: Connecting http://URL_STRING/java/lang/StringBeanInfo.class with cookie "ASP.NET_SessionId=phcqzm55x31r0p45ox3sdanj"
Inside of the proxy
server, the following is encountered:
AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: java.net.ConnectException: Connection timed out: connect
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}stackTrace:java.net.ConnectException: Connection timed out: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(Unknown Source)
at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.connect(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.<init>(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketFactoryImpl.createSocket(Unknown Source)
at org.apache.axis.components.net.JSSESocketFactory.create(JSSESocketFactory.java:92)
at org.apache.axis.transport.http.HTTPSender.getSocket(HTTPSender.java:191)
at org.apache.axis.transport.http.HTTPSender.writeToSocket(HTTPSender.java:404)
at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:138)
at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)
at org.apache.axis.client.Call.invokeEngine(Call.java:2765)
at org.apache.axis.client.Call.invoke(Call.java:2748)
at org.apache.axis.client.Call.invoke(Call.java:2424)
at org.apache.axis.client.Call.invoke(Call.java:2347)
at org.apache.axis.client.Call.invoke(Call.java:1804)
at URL_STRING.WEB_SERVICE_NAMESoapStub.webMethod(Unknown Source)
at AppletName.CallingClass.<init>(CallingClass.java:127)
What I have noticed
is that as soon as the call is made using the socket connection rather than an
HTTP connection, it tries to use proxy=DIRECT instead of proxy=HTTP @ /IPADDRESS:PORT, where IPADDRESS is the IP
Address of the proxy server and PORT is the port to be used for the proxy
server.
Has anyone else ran
into this situation or does anyone have any ideas of how to fix this
problem. The applet must be able to run behind any proxy server, not a
specific one, and we don't have any idea before hand what the proxy server
settings will be. I do know that the applet gets the proxy server settings
from the browser automatically, as can be seen from the JAVA Console dump, with
the exception at the point in time when it actually calls the web
method.
Thank you in
advance,
Larry M. Lemons
