本帖最后由 sca4441479 于 2014-04-21 16:53:03 编辑

解决方案 »

  1.   


    看来是连接被拒绝了,检查下webservice的url!
    学习XFire可以去它的官网,那里有user's Guide
      

  2.   

    基本就是按照http://wenku.baidu.com/link?url=CSmUZGJB3_OKOsGLty7pP2G9703gGBV8rimJIWK0b8WYSMRlrLLwSJ2sGQslxmd_WueRrQLhzDQs5bYKuuKM-U6VQuO0dkzJyGLJd-XFcMe这个链接上的例子来的,除了项目名字不一样。
    我贴出来吧、
    这个是web.xml<?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE web-app   
        PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"   
        "http://java.sun.com/dtd/web-app_2_3.dtd">
    <web-app>  <servlet>
        <servlet-name>XFireServlet</servlet-name>
        <display-name>XFire Servlet</display-name>
        <servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>
      </servlet>  <servlet-mapping>
        <servlet-name>XFireServlet</servlet-name>
        <url-pattern>/servlet/XFireServlet/*</url-pattern>
      </servlet-mapping>  <servlet-mapping>
        <servlet-name>XFireServlet</servlet-name>
        <url-pattern>/services/*</url-pattern>
      </servlet-mapping></web-app>
    这个是services.xml,在web-inf/xfire下
    <beans xmlns="http://xfire.codehaus.org/config/1.0">
      <service>
        <name>SayHiService</name>
        <namespace>http://cn.com.pansky/SayHiService</namespace>
        <serviceClass>cn.com.pansky.webservice.xfire.study.SayHiService</serviceClass>
        <implementationClass>cn.com.pansky.webservice.xfire.study.SayHiServiceImpl</implementationClass>
      </service>
    </beans>
    这个是接口package cn.com.pansky.webservice.xfire.study;public interface SayHiService {
    public String sayHi(String name);
    }这是实现类package cn.com.pansky.webservice.xfire.study;public class SayHiServiceImpl implements SayHiService{
      public String sayHi(String name){
        if(name==null){
          return "连名字也不肯告诉我吗?";
        }
        return name+", 你吃了吗?没吃回家吃去吧。";
      }   public String 不告诉你(){
        return "我的名字不告诉你!";
      }
    }这是客户端访问代码public class SayHiClient { /**
     * @param args
     */
      public static void main(String args[]) {
        String serviceURL = "http://localhost/webServiceTest/services/SayHiService";
        Service serviceModel = new ObjectServiceFactory().create(SayHiService.class,null,"http://cn.com.pansky/SayHiService",null);     XFireProxyFactory serviceFactory = new XFireProxyFactory();     try{
          SayHiService service = (SayHiService) serviceFactory.create(serviceModel, serviceURL);
          Client client = Client.getInstance(service);
          //client.addOutHandler(new OutHeaderHandler());       // disable timeout
          client.setProperty(CommonsHttpMessageSender.HTTP_TIMEOUT, "1");       String hello = service.sayHi("张山疯");
          System.out.println("服务器对[张山疯] 的回答是:" + hello );       hello = service.sayHi(null);
          System.out.println("服务器胡言乱语说:" + hello );     } catch (MalformedURLException e) {
          e.printStackTrace();
        }
      }}
      

  3.   

    运行结果报错如下:
    结果报错如下:
    2014-4-17 15:48:13 org.apache.commons.httpclient.HttpMethodDirector executeWithRetry
    信息: I/O exception (java.net.ConnectException) caught when processing request: Connection refused: connect
    2014-4-17 15:48:13 org.apache.commons.httpclient.HttpMethodDirector executeWithRetry
    信息: Retrying request
    2014-4-17 15:48:14 org.apache.commons.httpclient.HttpMethodDirector executeWithRetry
    信息: I/O exception (java.net.ConnectException) caught when processing request: Connection refused: connect
    2014-4-17 15:48:14 org.apache.commons.httpclient.HttpMethodDirector executeWithRetry
    信息: Retrying request
    2014-4-17 15:48:15 org.apache.commons.httpclient.HttpMethodDirector executeWithRetry
    信息: I/O exception (java.net.ConnectException) caught when processing request: Connection refused: connect
    2014-4-17 15:48:15 org.apache.commons.httpclient.HttpMethodDirector executeWithRetry
    信息: Retrying request
    2014-4-17 15:48:16 org.codehaus.xfire.transport.http.HttpChannel sendViaClient
    严重: java.net.ConnectException: Connection refused: connect
    Exception in thread "main" org.codehaus.xfire.XFireRuntimeException: Could not invoke service.. Nested exception is org.codehaus.xfire.fault.XFireFault: Couldn't send message.
    org.codehaus.xfire.fault.XFireFault: Couldn't send message.
    at org.codehaus.xfire.fault.XFireFault.createFault(XFireFault.java:89)
    at org.codehaus.xfire.handler.OutMessageSender.invoke(OutMessageSender.java:30)
    at org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)
    at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:79)
    at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:114)
    at org.codehaus.xfire.client.Client.invoke(Client.java:336)
    at org.codehaus.xfire.client.XFireProxy.handleRequest(XFireProxy.java:77)
    at org.codehaus.xfire.client.XFireProxy.invoke(XFireProxy.java:57)
    at $Proxy0.sayHi(Unknown Source)
    at cn.com.pansky.webservice.xfire.study.SayHiClient.main(SayHiClient.java:34)
    Caused by: org.codehaus.xfire.XFireException: Couldn't send message.
    at org.codehaus.xfire.transport.http.HttpChannel.sendViaClient(HttpChannel.java:145)
    at org.codehaus.xfire.transport.http.HttpChannel.send(HttpChannel.java:48)
    at org.codehaus.xfire.handler.OutMessageSender.invoke(OutMessageSender.java:26)
    ... 8 more
    Caused by: java.net.ConnectException: Connection refused: connect
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
    at java.net.Socket.connect(Socket.java:519)
    at java.net.Socket.connect(Socket.java:469)
    at java.net.Socket.<init>(Socket.java:366)
    at java.net.Socket.<init>(Socket.java:240)
    at org.apache.commons.httpclient.protocol.DefaultProtocolSocketFactory.createSocket(DefaultProtocolSocketFactory.java:79)
    at org.apache.commons.httpclient.protocol.DefaultProtocolSocketFactory.createSocket(DefaultProtocolSocketFactory.java:121)
    at org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java:706)
    at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$HttpConnectionAdapter.open(MultiThreadedHttpConnectionManager.java:1321)
    at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:386)
    at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:170)
    at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:396)
    at org.codehaus.xfire.transport.http.CommonsHttpMessageSender.send(CommonsHttpMessageSender.java:369)
    at org.codehaus.xfire.transport.http.HttpChannel.sendViaClient(HttpChannel.java:123)
    ... 10 more
      

  4.   

    官网纯英文,真心无力。。
    别想的那么难
     String serviceURL = "http://localhost/webServiceTest/services/SayHiService";
    你部署在tomcat中吗
    端口号什么的都配好了吗
      

  5.   

    http://localhost这样写默认是80端口吧,这个不是乱写的。
      

  6.   

    官网纯英文,真心无力。。
    别想的那么难
     String serviceURL = "http://localhost/webServiceTest/services/SayHiService";
    你部署在tomcat中吗
    端口号什么的都配好了吗例子是localhost没加端口,不管我配127.0.0.1:8080、还是localhost:8080、还是我的联网IP192.168.90.11:8080都是报一样的错:
    2014-4-22 10:07:38 org.codehaus.xfire.transport.http.HttpChannel sendViaClient
    严重: java.net.SocketTimeoutException: Read timed out
    Exception in thread "main" org.codehaus.xfire.XFireRuntimeException: Could not invoke service.. Nested exception is org.codehaus.xfire.fault.XFireFault: Couldn't send message.
    org.codehaus.xfire.fault.XFireFault: Couldn't send message.
    at org.codehaus.xfire.fault.XFireFault.createFault(XFireFault.java:89)
    at org.codehaus.xfire.handler.OutMessageSender.invoke(OutMessageSender.java:30)
    at org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)
    at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:79)
    at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:114)
    at org.codehaus.xfire.client.Client.invoke(Client.java:336)
    at org.codehaus.xfire.client.XFireProxy.handleRequest(XFireProxy.java:77)
    at org.codehaus.xfire.client.XFireProxy.invoke(XFireProxy.java:57)
    at $Proxy0.sayHi(Unknown Source)
    at xfire.client.SayHiClient.main(SayHiClient.java:33)
    Caused by: org.codehaus.xfire.XFireException: Couldn't send message.
    at org.codehaus.xfire.transport.http.HttpChannel.sendViaClient(HttpChannel.java:145)
    at org.codehaus.xfire.transport.http.HttpChannel.send(HttpChannel.java:48)
    at org.codehaus.xfire.handler.OutMessageSender.invoke(OutMessageSender.java:26)
    ... 8 more
    Caused by: java.net.SocketTimeoutException: Read timed out
    at java.net.SocketInputStream.socketRead0(Native Method)
    at java.net.SocketInputStream.read(SocketInputStream.java:129)
    at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
    at java.io.BufferedInputStream.read(BufferedInputStream.java:237)
    at org.apache.commons.httpclient.HttpParser.readRawLine(HttpParser.java:77)
    at org.apache.commons.httpclient.HttpParser.readLine(HttpParser.java:105)
    at org.apache.commons.httpclient.HttpConnection.readLine(HttpConnection.java:1115)
    at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$HttpConnectionAdapter.readLine(MultiThreadedHttpConnectionManager.java:1373)
    at org.apache.commons.httpclient.HttpMethodBase.readStatusLine(HttpMethodBase.java:1832)
    at org.apache.commons.httpclient.HttpMethodBase.readResponse(HttpMethodBase.java:1590)
    at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:995)
    at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:397)
    at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:170)
    at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:396)
    at org.codehaus.xfire.transport.http.CommonsHttpMessageSender.send(CommonsHttpMessageSender.java:369)
    at org.codehaus.xfire.transport.http.HttpChannel.sendViaClient(HttpChannel.java:123)
    ... 10 more
      

  7.   

    你 url 看看地址是否打得开。 。
      

  8.   

    不行的,我用http://localhost:8080/webServiceTest/services/SayHiService的话就出来Invalid SOAP request.