我可以通过 http://localhost:8080/WorldExpo/service/SupplierOrder?wsdl 来访问我发布的service但是我客户端访问的时候却出错
错误如下:
org.apache.cxf.interceptor.Fault: Could not send Message.
at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:64)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:243)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:487)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:313)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:265)
at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:124)
at $Proxy45.listAllOrder(Unknown Source)
at com.cn.client.Supplier.main(Supplier.java:23)
Caused by: java.io.IOException: IOException invoking http://localhost:8080/WorldWxpo/service/SupplierOrder: HTTP response '404: Not Found'
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.mapException(HTTPConduit.java:2058)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:2043)
at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66)
at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:639)
at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
... 8 more
Caused by: java.io.IOException: HTTP response '404: Not Found'
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:2194)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:2134)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1988)
... 11 more
Exception in thread "main" javax.xml.ws.WebServiceException: Could not send Message.
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:135)
at $Proxy45.listAllOrder(Unknown Source)
at com.cn.client.Supplier.main(Supplier.java:23)
Caused by: java.io.IOException: IOException invoking http://localhost:8080/WorldWxpo/service/SupplierOrder: HTTP response '404: Not Found'
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.mapException(HTTPConduit.java:2058)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:2043)
at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66)
at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:639)
at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:243)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:487)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:313)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:265)
at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:124)
... 2 more
Caused by: java.io.IOException: HTTP response '404: Not Found'
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:2194)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:2134)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1988)
... 11 more
客户端代码:package com.cn.client;import java.util.List;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.cn.pojo.Order;
import com.cn.webservice.ISupplierAction;public final class Supplier { public Supplier() { } public static void main(String args[]) throws Exception {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
new String[] { "client-beans.xml" }); ISupplierAction client = (ISupplierAction) context
.getBean("supplierclient"); List<Order> orderset = client.listAllOrder(); for (int i = 0; i < orderset.size(); i++) { System.out.println("Order is" + orderset.get(i));
} }
}配置文件:<jaxws:client id="supplierclient" serviceClass="com.cn.webservice.ISupplierAction"
address="http://localhost:8080/WorldWxpo/service/SupplierOrder" /></beans>问题到底出现在哪呢????麻烦大家帮忙看看 多谢了

解决方案 »

  1.   

        <bean id="client" class="demo.spring.HelloWorld" 
          factory-bean="clientFactory" factory-method="create"/>
        
    <bean id="clientFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
      <property name="serviceClass" value="demo.spring.HelloWorld"/>
      <property name="address" value="http://localhost:8088/HelloWorld"/>
    </bean>
      

  2.   

    public final class Client {    private Client() {
        }    public static void main(String args[]) throws Exception {
            // START SNIPPET: client
            ClassPathXmlApplicationContext context 
                = new ClassPathXmlApplicationContext("demo/spring/client/client-beans.xml");        HelloWorld client = (HelloWorld)context.getBean("client");        String response = client.sayHi("one");
            System.out.println("Response: " + response);
            System.exit(0);
            // END SNIPPET: client
        }
    }public class Server {    protected Server() throws Exception {
            System.out.println("Starting Server");        /**
             * Important: This code simply starts up a servlet container and adds
             * the web application in src/webapp to it. Normally you would be using
             * Jetty or Tomcat and have the webapp packaged as a WAR. This is simply
             * as a convenience so you do not need to configure your servlet
             * container to see CXF in action!
             */
            org.eclipse.jetty.server.Server server = new org.eclipse.jetty.server.Server();        SelectChannelConnector connector = new SelectChannelConnector();
            connector.setPort(8088);
            server.setConnectors(new Connector[] {connector});        WebAppContext webappcontext = new WebAppContext();
            
            webappcontext.setContextPath("/");        webappcontext.setWar("webapp");        HandlerCollection handlers = new HandlerCollection();
            handlers.setHandlers(new Handler[] {webappcontext, new DefaultHandler()});        server.setHandler(handlers);
            server.start();
            System.out.println("Server ready...");
            server.join();
        }    public static void main(String args[]) throws Exception {
            new Server();
        }}
    代码是cxfsamples下的java_first_spring_support示例:
    部署好后记得昨天调用成功,可是今天再调的时候就发不了信息了。不知道什么原因啊,高手大侠神仙哥哥姐姐们你们有没有遇到过啊,怎么解决的啊!
      

  3.   

    我出现过类似的情况,可以url中访问wsdl,但是客户端就出异常!!  
    解决方案:把wsdl4j-1.6.2.jar包拷贝到jre的lib\endorsed下面
      

  4.   


    jre下面没有lib\endorsed目录  我新建一个放到下面 用java测试还是不行
      

  5.   

    我也遇到同样问题,奇怪的是在MyEclipse里运行是正常的,但是在Eclipse里就报这些错误了,高手看看是怎么回事呢?