Axis Client + app desktop java.net.SocketException:Malformed reply from SOCKS [gambi-resolv]

Buenas!

Tenho um site feito em PHP, onde coloquei um webservice rodando (biblioteca nuSOAP) e tenho uma app java Swing que irá consumir este webservice, utilizando o Axis, versão 1.4

No meu ambiente de testes (local na empresa) está funcionando OK, porém ao trocar a url para o meu webservice que está online, e tentar chamar um método recebo a seguinte exception:

AxisFault
 faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
 faultSubcode: 
 faultString: java.net.SocketException: Malformed reply from SOCKS server
 faultActor: 
 faultNode: 
 faultDetail: 
        {http://xml.apache.org/axis/}stackTrace:java.net.SocketException: Malformed reply from SOCKS server
        at java.net.SocksSocketImpl.readSocksReply(SocksSocketImpl.java:90)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:429)
        at java.net.Socket.connect(Socket.java:525)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.axis.components.net.DefaultSocketFactory.create(DefaultSocketFactory.java:153)
        at org.apache.axis.components.net.DefaultSocketFactory.create(DefaultSocketFactory.java:125)
        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:2784)
        at org.apache.axis.client.Call.invoke(Call.java:2767)
        at org.apache.axis.client.Call.invoke(Call.java:2443)
        at org.apache.axis.client.Call.invoke(Call.java:2366)
        at org.apache.axis.client.Call.invoke(Call.java:1812)
        at atualizadorwsdl_pkg.AtualizadorwsdlBindingStub.autenticarUsuario(AtualizadorwsdlBindingStub.java:220)
        at br.com.insoft4.webservice.Consumidor.autenticarUsuario(Consumidor.java:69)
        at br.com.insoft4.util.AppViewUtil.autenticarSite(AppViewUtil.java:187)
        at br.com.insoft4.swing.AppView.autentic(AppView.java:110)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.jdesktop.application.ApplicationAction.noProxyActionPerformed(ApplicationAction.java:662)
        at org.jdesktop.application.ApplicationAction.actionPerformed(ApplicationAction.java:698)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
        at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272)
        at java.awt.Component.processMouseEvent(Component.java:6263)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
        at java.awt.Component.processEvent(Component.java:6028)
        at java.awt.Container.processEvent(Container.java:2041)
        at java.awt.Component.dispatchEventImpl(Component.java:4630)
        at java.awt.Container.dispatchEventImpl(Container.java:2099)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
        at java.awt.Container.dispatchEventImpl(Container.java:2085)
        at java.awt.Window.dispatchEventImpl(Window.java:2478)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

        {http://xml.apache.org/axis/}hostname:INSOFT-DESENV6

java.net.SocketException: Malformed reply from SOCKS server
        at org.apache.axis.AxisFault.makeFault(AxisFault.java:101)
        at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:154)
        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:2784)
        at org.apache.axis.client.Call.invoke(Call.java:2767)
        at org.apache.axis.client.Call.invoke(Call.java:2443)
        at org.apache.axis.client.Call.invoke(Call.java:2366)
        at org.apache.axis.client.Call.invoke(Call.java:1812)
        at atualizadorwsdl_pkg.AtualizadorwsdlBindingStub.autenticarUsuario(AtualizadorwsdlBindingStub.java:220)
        at br.com.insoft4.webservice.Consumidor.autenticarUsuario(Consumidor.java:69)
        at br.com.insoft4.util.AppViewUtil.autenticarSite(AppViewUtil.java:187)
        at br.com.insoft4.swing.AppView.autentic(AppView.java:110)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.jdesktop.application.ApplicationAction.noProxyActionPerformed(ApplicationAction.java:662)
        at org.jdesktop.application.ApplicationAction.actionPerformed(ApplicationAction.java:698)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
        at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272)
        at java.awt.Component.processMouseEvent(Component.java:6263)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
        at java.awt.Component.processEvent(Component.java:6028)
        at java.awt.Container.processEvent(Container.java:2041)
        at java.awt.Component.dispatchEventImpl(Component.java:4630)
        at java.awt.Container.dispatchEventImpl(Container.java:2099)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
        at java.awt.Container.dispatchEventImpl(Container.java:2085)
        at java.awt.Window.dispatchEventImpl(Window.java:2478)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Caused by: java.net.SocketException: Malformed reply from SOCKS server
        at java.net.SocksSocketImpl.readSocksReply(SocksSocketImpl.java:90)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:429)
        at java.net.Socket.connect(Socket.java:525)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.axis.components.net.DefaultSocketFactory.create(DefaultSocketFactory.java:153)
        at org.apache.axis.components.net.DefaultSocketFactory.create(DefaultSocketFactory.java:125)
        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)
        ... 45 more

Tentei setar para utilizar o proxy da empresa, mas ocorre o mesmo erro.

[color=darkblue] Agora vem o interessante: tenho uma classe de testes para o webservice, e ela roda ok também! [/color]

Vi nesta thread http://www.guj.com.br/java/98641-client-activemq-nao-conecta-no-server-com-proxy-ativo que pode ter algum problema do Swing com proxys. Alguém já passou por isso?

Boa tarde!

Alguém sabe se consigo efetuar debug do SOAP que está sendo enviado?

Tentei configurando o log4j como debug (estou usando apenas o cliente axis) , mas a única mensagem que recebi foi de anexos…

- Unable to find required classes (javax.activation.DataHandler and javax.mail.internet.MimeMultipart). Attachment support is disabled.

Tinha configurado errado o log4j. Agora apareceu a exception que realmente está ocorrendo e vou verificar o porque disto.

- MessageContext: setTargetService(atualizadorwsdlPort)
- org.apache.axis.i18n.resource::handleGetObject(noService10)
- Exception: 
org.apache.axis.ConfigurationException: No service named atualizadorwsdlPort is available
org.apache.axis.ConfigurationException: No service named atualizadorwsdlPort is available
        at org.apache.axis.configuration.FileProvider.getService(FileProvider.java:233)
        at org.apache.axis.AxisEngine.getService(AxisEngine.java:311)
        at org.apache.axis.MessageContext.setTargetService(MessageContext.java:756)
        at org.apache.axis.client.Call.invoke(Call.java:2690)
        at org.apache.axis.client.Call.invoke(Call.java:2443)
        at org.apache.axis.client.Call.invoke(Call.java:2366)
        at org.apache.axis.client.Call.invoke(Call.java:1812)
        at atualizadorwsdl_pkg.AtualizadorwsdlBindingStub.autenticarUsuario(AtualizadorwsdlBindingStub.java:220)
        at br.com.insoft4.webservice.Consumidor.autenticarUsuario(Consumidor.java:36)
        at br.com.insoft4.swing.Test$AutenticTask$1.run(Test.java:114)
        at java.lang.Thread.run(Thread.java:619)

        at org.apache.axis.configuration.FileProvider.getService(FileProvider.java:233)
        at org.apache.axis.AxisEngine.getService(AxisEngine.java:311)
        at org.apache.axis.MessageContext.setTargetService(MessageContext.java:756)
        at org.apache.axis.client.Call.invoke(Call.java:2690)
        at org.apache.axis.client.Call.invoke(Call.java:2443)
        at org.apache.axis.client.Call.invoke(Call.java:2366)
        at org.apache.axis.client.Call.invoke(Call.java:1812)
        at atualizadorwsdl_pkg.AtualizadorwsdlBindingStub.autenticarUsuario(AtualizadorwsdlBindingStub.java:220)
        at br.com.insoft4.webservice.Consumidor.autenticarUsuario(Consumidor.java:36)
        at br.com.insoft4.swing.Test$AutenticTask$1.run(Test.java:114)
        at java.lang.Thread.run(Thread.java:619)
- MessageContext: setServiceHandler(null)

Eu pareço um forever alone nesta thread, mas tudo bem ahuahauhaua

Testei os dois arquivos com o debug do Log4j (o form swing que dá erro e a minha classe de testes). Pelo que eu percebi, a diferença é que pelo Swing o xml não é enviado, retornando o Axis Fault.

- End element soapenv:Envelope
- org.apache.axis.i18n.resource::handleGetObject(empty00)
- NSPop (empty)
- org.apache.axis.i18n.resource::handleGetObject(setMsgForm)
- Setting current message form to: FORM_OPTIMIZED (currentMessage is now org.apache.axis.utils.ByteArray)
- Exit: SOAPPart::saveChanges(): org.apache.axis.utils.ByteArray@ecb281
- java.lang.reflect.InvocationTargetException
- Enter: SOAPPart ctor(FORM_FAULT)
- org.apache.axis.i18n.resource::handleGetObject(setMsgForm)
- Setting current message form to: FORM_FAULT (currentMessage is now org.apache.axis.AxisFault)
- Exit: SOAPPart ctor()
- org.apache.axis.i18n.resource::handleGetObject(toAxisFault00)
- Mapping Exception to AxisFault
- NSPush (32)
- org.apache.axis.i18n.resource::handleGetObject(empty00)
- NSPop (empty)
- NSPush (32)
- org.apache.axis.i18n.resource::handleGetObject(empty00)
- NSPop (empty)
AxisFault
 faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
 faultSubcode: 
 faultString: java.net.SocketException: Malformed reply from SOCKS server
 faultActor: 
 faultNode: 
 faultDetail: 
        {http://xml.apache.org/axis/}stackTrace:java.net.SocketException: Malformed reply from SOCKS server

Já pela classe de teste eu recebo uma conexão http:

- End element soapenv:Envelope
- org.apache.axis.i18n.resource::handleGetObject(empty00)
- NSPop (empty)
- org.apache.axis.i18n.resource::handleGetObject(setMsgForm)
- Setting current message form to: FORM_OPTIMIZED (currentMessage is now org.apache.axis.utils.ByteArray)
- Exit: SOAPPart::saveChanges(): org.apache.axis.utils.ByteArray@4f80d6
- org.apache.axis.i18n.resource::handleGetObject(createdHTTP00)
- Created an insecure HTTP connection
- org.apache.axis.i18n.resource::handleGetObject(xmlSent00)
- XML sent:
- ---------------------------------------------------
- POST /insoft/index.php/webservice/index/ HTTP/1.0
Content-Type: text/xml; charset=utf-8
Accept: application/soap+xml, application/dime, multipart/related, text/*
User-Agent: Axis/1.4
Host: www.insoft4.com.br
Cache-Control: no-cache
Pragma: no-cache
SOAPAction: "urn:atualizadorwsdl#autenticarUsuario"
Content-Length: 504

E em ambos ocorre a exception que eu postei antes, do “No service named”…

Desabilitando as configurações de proxy do windows funciona. Vai entender…