JAX-WS

2011-08-29 3 views
4

Я произвел клиент JAX-WS, выполнив команду:JAX-WS

 
C:\wsdl>wsimport -keep -verbose -d generated HealthMobilitySequenceArtifacts.wsdl 

адрес службы в файле WSDL является:

 
    soap:address location="http://localhost:8585/active-bpel/services/HealthMobilitySequence 

Ну, я упакована генерируемые файлы в банке (clentjaxw.jar), и я использую его как импортированную библиотеку в проекте eclipse для проведения некоторых тестов.

Дело в том, что я могу сделать мои тесты без проблем, но когда я обеспечиваю коллегу clientjaxw.jar он имеет следующую ошибку во время выполнения:

 
    Exception in thread "main" com.sun.xml.internal.ws.client.ClientTransportException: HTTP transport error: java.net.ConnectException: Connection refused: connect 
     at com.sun.xml.internal.ws.transport.http.client.HttpClientTransport.getOutput(Unknown Source) 
     at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.process(Unknown Source) 
     at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.processRequest(Unknown Source) 
     at com.sun.xml.internal.ws.transport.DeferredTransportPipe.processRequest(Unknown Source) 
     at com.sun.xml.internal.ws.api.pipe.Fiber.__doRun(Unknown Source) 
     at com.sun.xml.internal.ws.api.pipe.Fiber._doRun(Unknown Source) 
     at com.sun.xml.internal.ws.api.pipe.Fiber.doRun(Unknown Source) 
     at com.sun.xml.internal.ws.api.pipe.Fiber.runSync(Unknown Source) 
     at com.sun.xml.internal.ws.client.Stub.process(Unknown Source) 
     at com.sun.xml.internal.ws.client.sei.SEIStub.doProcess(Unknown Source) 
     at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(Unknown Source) 
     at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(Unknown Source) 
     at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(Unknown Source) 
     at $Proxy29.bookTreatment(Unknown Source) 
     at test.TestJaxWS.main(TestJaxWS.java:32) 
    Caused by: java.net.ConnectException: Connection refused: 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 java.net.Socket.connect(Unknown Source) 
     at sun.net.NetworkClient.doConnect(Unknown Source) 
     at sun.net.www.http.HttpClient.openServer(Unknown Source) 
     at sun.net.www.http.HttpClient.openServer(Unknown Source) 
     at sun.net.www.http.HttpClient.(Unknown Source) 
     at sun.net.www.http.HttpClient.New(Unknown Source) 
     at sun.net.www.http.HttpClient.New(Unknown Source) 
     at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown Source) 
     at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source) 
     at sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source) 
     at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(Unknown Source) 
     ... 15 more 

Я не понимаю проблему: тем не менее коллеж может визуализировать услугу в браузере по этому адресу, а также запустить ping localhost. Более того, я проверил, что он не за прокси.

Есть ли у вас некоторые идеи о причине проблемы?


UPDATE: Я должен добавить новые детали: я обнаружил, что коллега может получить доступ через браузер, чтобы: http://localhost:8585/active-bpel/services/HealthMobilitySequence?wsdl но если он пытается получить доступ к: Http: //127.0.0.1: 8585/active-bpel/services/HealthMobilitySequence? Wsdl или к тому же URL-адресу с IP-адресом вместо локального хоста он терпит неудачу. На моей машине у меня нет такой проблемы, я имею доступ ко всем возможностям: localhost, имя машины, 127.0.0.1, ipaddress.

Поэтому я думаю, что это может быть проблема, я имею в виду, что я могу себе представить, что через java URL-адрес http://localhost:8585/active-bpel/services/HealthMobilitySequence переводится, прежде чем открывать соединение сокета java, в новом, используя ip-адрес (или 127.0.0.1) вместо localhost и сбой доступа. Таким образом, кажется, что проблема связана с оперативной системой, поскольку мы разделяем точно такую ​​же конфигурацию частью оперативной системы (выигрываем xp на моей машине, Vista на своем).

Некоторые идеи? Благодаря


UPDATE: Привет еще раз, по какой-то причине меняющегося машину (всегда 64 BIT) коллега решил проблему я описал. Во всяком случае, у него есть другая проблема, которая не зависит от клиента, так как он испытал то же самое, вызывая использование eclipse web explorer. Исключением является следующее: java.lang.ClassCastException: com.sun.xml.internal.messaging.saaj.soap.ver1_1.Envelope1_1Impl не может быть приведен к java.lang.String

org.apache.axis.SOAPPart.getAsString(SOAPPart.java:554) 

    org.apache.axis.SOAPPart.writeTo(SOAPPart.java:322) 

    org.apache.axis.SOAPPart.writeTo(SOAPPart.java:269) 

    org.apache.axis.Message.writeTo(Message.java:539) 

    org.apache.axis.transport.http.AxisServlet.sendResponse(AxisServlet.java:902) 

    org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:777) 

    javax.servlet.http.HttpServlet.service(HttpServlet.java:647) 

    org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327) 

    javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 

Пожалуйста, позаботься что веб-служба, которую он вызывает, вызывает вызов одного из процессов bpel, развернутых в ActiveBPEL (версия 5.0.2), работающего в Tomcat 5.5.27. Кроме того, его конфигурация выглядит следующим образом: OP: windows 7, jdk: 1.6, arch: 64 бит, в то время как шахта: OP: windows xp, jdk: 1.6, arch: 32 бит. Есть ли у вас какое-то представление о проблеме?

Заранее спасибо

+0

Это звучит как проблема с конфигурацией. Я бы уточнил, что у вашего коллеги установлен IPv4 (подробнее см. [Этот пост] (http://serverfault.com/questions/4689)). – McDowell

ответ

1

Я просто столкнулся с этим вопросом при создании и тестировании кода ActiveBPEL. Мое решение состояло в том, чтобы явно отобразить java.xml.soap.MessageFactory для реализации Axis. Это позволяет избежать несовместимости между двумя пакетами SOAP.

Отображение может быть выполнено несколькими различными способами.

  1. Используйте системное свойство -Djavax.xml.soap.MessageFactory = org.apache.axis.soap.MessageFactoryImpl
  2. Включить заводскую файл на пути к классам: /META-INF/javax.xml.soap. MessageFactory где содержимое этого файла представляет собой одну строку текста: org.apache.axis.soap.MessageFactoryImpl

Если вы создаете источник АЭ, то последний является предпочтительным механизмом и может быть добавлен к org.activebpel.rt.axis.bpel. Если вы используете двоичные файлы, вам, вероятно, потребуется создать настраиваемое свойство в сценарии запуска для вашего контейнера (Tomcat/Jetty).

Смежные вопросы