首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Axis2 Web服务客户端失败AxisFault:已在使用的地址: NET_Bind

Axis2 Web服务客户端失败AxisFault:已在使用的地址: NET_Bind
EN

Stack Overflow用户
提问于 2012-08-02 15:08:49
回答 1查看 3.6K关注 0票数 1

我正在使用Axis 2和tomcat插件(用Eclipse嵌入式maven启动)开发一个web服务。为了测试目的,我使用AXIOM开发了一个web服务客户端。

当我在我的系统上运行客户机(Windows7Pro)时,我得到了各种各样的行为,其中大多数都是失败的:

代码语言:javascript
复制
org.apache.axis2.AxisFault: Address already in use: NET_Bind
    at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)
    at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:197)
    at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:75)
    at org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:404)
    at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:231)
    at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:443)
    at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:406)
    at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
    at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
    at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:555)
    at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:531)
    at com.nm.bdl.Launcher.main(Launcher.java:82)
Caused by: java.net.BindException: Address already in use: NET_Bind
    at java.net.PlainSocketImpl.socketBind(Native Method)
    at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:398)
    at java.net.Socket.bind(Socket.java:582)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:615)
    at org.apache.commons.httpclient.protocol.ReflectionSocketFactory.createSocket(ReflectionSocketFactory.java:139)
    at org.apache.commons.httpclient.protocol.DefaultProtocolSocketFactory.createSocket(DefaultProtocolSocketFactory.java:125)
    at org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java:707)
    at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$HttpConnectionAdapter.open(MultiThreadedHttpConnectionManager.java:1361)
    at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:387)
    at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
    at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
    at org.apache.axis2.transport.http.AbstractHTTPSender.executeMethod(AbstractHTTPSender.java:621)
    at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:193)
    ... 10 more

在极少数情况下,客户端程序成功地到达了web服务。

web服务和客户端程序运行良好,我在其他计算机(仍然是Windows 7 Pro)上进行了测试。当我成功地从另一台计算机运行web服务客户端时,它也能工作。

以下是pom.xml中tomcat插件的定义:

代码语言:javascript
复制
  <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>tomcat-maven-plugin</artifactId>        
    <dependencies>
      <dependency>
          <groupId>jaxen</groupId>
          <artifactId>jaxen</artifactId>
          <version>full</version>
      </dependency>
    </dependencies>       
    <configuration>         
      <server>tomcat-development-server</server>
        <port>9966</port>
        <path>/</path>
        <systemProperties>
            <logs.dir>logs</logs.dir>
        </systemProperties>
        <useNaming>true</useNaming>
        <contextFile>${basedir}/src/test/resources/tomcatconf/context.xml</contextFile>
        <!-- 
        <configurationDir>${basedir}/src/main/tomcatconf</configurationDir>
         -->
    </configuration>
    <executions>
      <execution>
        <id>run-tomcat</id>
        <phase>pre-integration-test</phase>
        <goals>
          <goal>run</goal>
        </goals>
      </execution>
    </executions>
  </plugin>

web服务客户端程序:

代码语言:javascript
复制
  static String address_WS   = "http://localhost:9966/services/GetGedFile";

  /**
   * @param args
   */
  public static void main(String[] args) {

    final EndpointReference targetService = new EndpointReference(address_WS);

    /* ... */

    try {
      Options options = new Options();

      ServiceClient client = new ServiceClient();
      options.setTo(targetService);
      options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
      options.setProperty(HTTPConstants.REUSE_HTTP_CLIENT, "true");
      options.setTimeOutInMilliSeconds(360000);

      client.setOptions(options); 

      OMElement result = client.sendReceive(serviceOp);

      String response = result.getFirstElement().getText();
      System.err.println("WS call result: " + response);

      OMNode node = result.getFirstElement().getFirstOMChild();
      if (node instanceof OMText) {                  
        OMText txt = (OMText) node;                  

        String data = txt.getText();
        byte[] dataBytes = Base64.decode(data);

        String realString = new String(dataBytes,"UTF-8");
        System.out.println("pseudo binary data received : " + realString);
      }

    } catch(AxisFault af) {
      af.printStackTrace();
    } catch (UnsupportedEncodingException e) {
      e.printStackTrace();
    }
  }

我试图清理windows服务,停止防病毒,使用其他端口(与端口9966不同),用IP adress替换本地主机:徒劳无功。我已经用TCPView监视我的系统,以检查轴web服务是否使用与tomcat插件中配置的相同端口。

还有别的主意吗?

编辑:另一个错误堆栈跟踪

代码语言:javascript
复制
log4j:WARN No appenders could be found for logger (org.apache.axis2.context.AbstractContext).
log4j:WARN Please initialize the log4j system properly.
org.apache.axis2.AxisFault: com.ctc.wstx.exc.WstxIOException: Unrecognized Windows Sockets error: -1: socket available
    at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)
    at org.apache.axis2.transport.TransportUtils.createSOAPMessage(TransportUtils.java:123)
    at org.apache.axis2.transport.TransportUtils.createSOAPMessage(TransportUtils.java:67)
    at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:354)
    at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:421)
    at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
    at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
    at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:555)
    at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:531)
    at com.nm.bdl.Launcher.main(Launcher.java:82)
Caused by: org.apache.axiom.om.OMException: com.ctc.wstx.exc.WstxIOException: Unrecognized Windows Sockets error: -1: socket available
    at org.apache.axiom.om.impl.llom.factory.AbstractOMMetaFactory.createXMLStreamReader(AbstractOMMetaFactory.java:63)
    at org.apache.axiom.om.impl.llom.factory.AbstractOMMetaFactory.createSOAPModelBuilder(AbstractOMMetaFactory.java:129)
    at org.apache.axiom.om.OMXMLBuilderFactory.createSOAPModelBuilder(OMXMLBuilderFactory.java:426)
    at org.apache.axiom.om.OMXMLBuilderFactory.createSOAPModelBuilder(OMXMLBuilderFactory.java:405)
    at org.apache.axis2.builder.SOAPBuilder.processDocument(SOAPBuilder.java:55)
    at org.apache.axis2.transport.TransportUtils.createDocumentElement(TransportUtils.java:179)
    at org.apache.axis2.transport.TransportUtils.createSOAPMessage(TransportUtils.java:145)
    at org.apache.axis2.transport.TransportUtils.createSOAPMessage(TransportUtils.java:108)
    ... 8 more
Caused by: com.ctc.wstx.exc.WstxIOException: Unrecognized Windows Sockets error: -1: socket available
    at com.ctc.wstx.stax.WstxInputFactory.doCreateSR(WstxInputFactory.java:548)
    at com.ctc.wstx.stax.WstxInputFactory.createSR(WstxInputFactory.java:604)
    at com.ctc.wstx.stax.WstxInputFactory.createSR(WstxInputFactory.java:629)
    at com.ctc.wstx.stax.WstxInputFactory.createXMLStreamReader(WstxInputFactory.java:324)
    at org.apache.axiom.util.stax.wrapper.XMLInputFactoryWrapper.createXMLStreamReader(XMLInputFactoryWrapper.java:95)
    at org.apache.axiom.util.stax.wrapper.WrappingXMLInputFactory.createXMLStreamReader(WrappingXMLInputFactory.java:116)
    at org.apache.axiom.util.stax.wrapper.XMLInputFactoryWrapper.createXMLStreamReader(XMLInputFactoryWrapper.java:95)
    at org.apache.axiom.util.stax.wrapper.WrappingXMLInputFactory.createXMLStreamReader(WrappingXMLInputFactory.java:116)
    at org.apache.axiom.util.stax.wrapper.XMLInputFactoryWrapper.createXMLStreamReader(XMLInputFactoryWrapper.java:95)
    at org.apache.axiom.om.util.StAXUtils$1.run(StAXUtils.java:201)
    at java.security.AccessController.doPrivileged(AccessController.java:241)
    at org.apache.axiom.om.util.StAXUtils.createXMLStreamReader(StAXUtils.java:197)
    at org.apache.axiom.om.impl.llom.factory.AbstractOMMetaFactory.createXMLStreamReader(AbstractOMMetaFactory.java:55)
    ... 15 more
Caused by: java.net.SocketException: Unrecognized Windows Sockets error: -1: socket available
    at java.net.PlainSocketImpl.socketAvailable(Native Method)
    at java.net.PlainSocketImpl.available(PlainSocketImpl.java:487)
    at java.net.SocketInputStream.available(SocketInputStream.java:246)
    at java.io.BufferedInputStream.read(BufferedInputStream.java:332)
    at org.apache.commons.httpclient.WireLogInputStream.read(WireLogInputStream.java:69)
    at org.apache.commons.httpclient.ChunkedInputStream.read(ChunkedInputStream.java:182)
    at java.io.FilterInputStream.read(FilterInputStream.java:134)
    at org.apache.commons.httpclient.AutoCloseInputStream.read(AutoCloseInputStream.java:108)
    at java.io.FilterInputStream.read(FilterInputStream.java:134)
    at org.apache.axiom.om.util.DetachableInputStream.read(DetachableInputStream.java:147)
    at java.io.FilterInputStream.read(FilterInputStream.java:134)
    at java.io.PushbackInputStream.read(PushbackInputStream.java:182)
    at java.io.FilterInputStream.read(FilterInputStream.java:113)
    at com.ctc.wstx.io.UTF8Reader.loadMore(UTF8Reader.java:365)
    at com.ctc.wstx.io.UTF8Reader.read(UTF8Reader.java:110)
    at com.ctc.wstx.io.ReaderBootstrapper.initialLoad(ReaderBootstrapper.java:245)
    at com.ctc.wstx.io.ReaderBootstrapper.bootstrapInput(ReaderBootstrapper.java:132)
    at com.ctc.wstx.stax.WstxInputFactory.doCreateSR(WstxInputFactory.java:543)
    ... 27 more
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-03 08:15:35

我的问题是通过更改客户机程序的java运行时来解决的。我使用的是IBM 5(这是web服务服务器的一个需求),我切换到了标准的Jre 6。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11780498

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档