`
堕落趴趴熊
  • 浏览: 1922 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

CXF客户端Invalid address. Endpoint address cannot be null异常求助

阅读更多
1.服务器端代码
package com.sunyard.service.deploy;

import javax.xml.ws.Endpoint;

import com.sunyard.service.HelloWorldService;


/**
*
* @ClassName: DeployHelloWorldService
* @Description: TODO 发布CXF WEBSERVICE
* @Author:
* @Date: 2012-3-14 上午9:33:38 (创建文件的精确时间)
*/
public class DeployHelloWorldService {

/**
*
* @Title: deployService
* @Description: 发布WEBSERVICE
* @return void
*/
public static void deployService() {
System.out.println("Server Start ......");
HelloWorldService service = new HelloWorldService();
String address = "http://172.16.3.61:9000/helloWorld";
Endpoint.publish(address, service);
}

public static void main(String[] args) {
//发布webService
deployService();
System.out.println("Server ready ......");
try {
Thread.sleep(1000 * 60);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// System.out.println("Server exiting ......");
//休眠60秒后退出
// System.exit(0);
}

}
package com.sunyard.service;

import javax.jws.WebParam;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;
HelloWorldService类代码
/**
*
* @ClassName: HelloWorldService
* @Description: TODO WEBSERVICE CXF 服务端示例
* @Author:
* @Date: 2012-3-14 上午9:27:13 (创建文件的精确时间)
*/
@WebService(serviceName="HelloWorldService")
@SOAPBinding(style = Style.RPC)
public class HelloWorldService {

public String sayHello(@WebParam(name = "name") String name) {
System.out.println(name);
return name + " say:  Hello World ";
}

}

2.客户端代码
package com.sunyard.client;

import javax.xml.namespace.QName;
import javax.xml.ws.Service;
import javax.xml.ws.soap.SOAPBinding;

import com.sunyard.service.IHelloWorldService;


/**
*
* @ClassName: HelloWorldServiceClient
* @Description: TODO WEBSERVICE客户端调用代码
* @Author:
* @Date: 2012-3-14 上午10:19:40 (创建文件的精确时间)
*/
public class HelloWorldServiceClient {
private final static QName SERVICE_NAME = new QName("http://service.sunyard.com/", "HelloWorldService");
private final static QName PORT_NAME = new QName("http://service.sunyard.com/", "HelloWorldServicePort");
/**
* @param args
*/
public static void main(String[] args) {
Service service = Service.create(SERVICE_NAME);
String endpointAddress = "http://172.16.3.61:9000/helloWorld"; //wsdl地址
service.addPort(PORT_NAME, SOAPBinding.SOAP11HTTP_BINDING, endpointAddress);
IHelloWorldService hw = service.getPort(IHelloWorldService.class); //发布服务的接口
System.out.println(hw.sayHello("name")); //接口方法调用
}
// public static void main(String[] args) {
// //调用webservice
// JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
// factory.setServiceClass(IHelloWorldService.class);
// factory.setAddress("http://172.16.3.61:9000/helloWorld");
//
// IHelloWorldService service = (IHelloWorldService) factory.create();
// System.out.println("[result]" + service.sayHello("chain"));
// }
}
IHelloWorldService类代码
package com.sunyard.service;

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;

/**
*
* @ClassName: IHelloWorldService
* @Description: TODO 客户端调用WEBSERVICE所需要的接口
* @Author:
* @Date: 2012-3-14 上午10:17:00 (创建文件的精确时间)
*/
@WebService
public interface IHelloWorldService {
@WebMethod
public String sayHello(@WebParam(name = "name") String name);
}
3.运行客户端后报错信息
警告: Interceptor for {http://service.sunyard.com/}HelloWorldService#{http://service.sunyard.com/}sayHello has thrown exception, unwinding now
org.apache.cxf.interceptor.Fault: Could not send Message.
at org.apache.cxf.interceptor.MessageSenderInterceptor.handleMessage(MessageSenderInterceptor.java:48)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263)
at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:533)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:463)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:366)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:319)
at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:88)
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:134)
at $Proxy22.sayHello(Unknown Source)
at com.sunyard.client.HelloWorldServiceClient.main(HelloWorldServiceClient.java:28)
Caused by: java.net.MalformedURLException: Invalid address. Endpoint address cannot be null.
at org.apache.cxf.transport.http.HTTPConduit.getURL(HTTPConduit.java:744)
at org.apache.cxf.transport.http.HTTPConduit.getURL(HTTPConduit.java:728)
at org.apache.cxf.transport.http.HTTPConduit.setupURL(HTTPConduit.java:675)
at org.apache.cxf.transport.http.HTTPConduit.prepare(HTTPConduit.java:464)
at org.apache.cxf.interceptor.MessageSenderInterceptor.handleMessage(MessageSenderInterceptor.java:46)
... 9 more
Exception in thread "main" javax.xml.ws.WebServiceException: Could not send Message.
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:145)
at $Proxy22.sayHello(Unknown Source)
at com.sunyard.client.HelloWorldServiceClient.main(HelloWorldServiceClient.java:28)
Caused by: java.net.MalformedURLException: Invalid address. Endpoint address cannot be null.
at org.apache.cxf.transport.http.HTTPConduit.getURL(HTTPConduit.java:744)
at org.apache.cxf.transport.http.HTTPConduit.getURL(HTTPConduit.java:728)
at org.apache.cxf.transport.http.HTTPConduit.setupURL(HTTPConduit.java:675)
at org.apache.cxf.transport.http.HTTPConduit.prepare(HTTPConduit.java:464)
at org.apache.cxf.interceptor.MessageSenderInterceptor.handleMessage(MessageSenderInterceptor.java:46)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263)
at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:533)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:463)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:366)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:319)
at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:88)
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:134)
... 2 more
4.补充:如果运行客户端中以下代码可以正常运行
public static void main(String[] args) {
//调用webservice
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setServiceClass(IHelloWorldService.class);
factory.setAddress("http://172.16.3.61:9000/helloWorld");

IHelloWorldService service = (IHelloWorldService) factory.create();
System.out.println("[result]" + service.sayHello("chain"));
}
运行结果:
2012-4-15 0:28:28 org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromClass
信息: Creating Service {http://service.sunyard.com/}IHelloWorldServiceService from class com.sunyard.service.IHelloWorldService
[result]chain say:  Hello World
分享到:
评论

相关推荐

    CXF客户端添加soapHeader代码 + jar包 + apache-cxf-3.1.15

    import org.apache.cxf.frontend.ClientProxyFactoryBean; public class ClientConfig { public static YourServiceInterface createClient() { ClientProxyFactoryBean factory = new ClientProxyFactoryBean();...

    cxf客户端所需jar包-4个

    标题 "cxf客户端所需jar包-4个" 暗示了这四个JAR文件是Apache CXF框架中用于构建客户端应用程序的基本组件,使得开发者能够方便地调用Web服务。Apache CXF是一个开源的Java框架,它允许创建和消费Web服务,支持多种...

    apache-cxf-2.7.7以及cxf客户端所需要的jar包

    这个压缩包"apache-cxf-2.7.7以及cxf客户端所需要的jar包"包含了Apache CXF 2.7.7版本及其客户端运行所需的库文件。这些jar包对于创建、部署和消费Web服务至关重要,特别是对于使用命令行生成Web服务客户端的开发者...

    CXF客户端支持最少jar

    ${cxf.version} <groupId>org.apache.cxf <artifactId>cxf-rt-transports-http</artifactId> ${cxf.version} <!-- 其他需要的jar包 --> ``` 然后根据需要添加或删除其他的CXF相关依赖。这样,你就可以创建一...

    cxf客户端调用axis服务端流程

    bp.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, endpointAddress); ``` #### 6. 调用服务端方法 现在你可以通过代理对象调用服务端的方法,传入必要的参数,并接收返回结果。 ```java ...

    CXF3.1.11客户端jar包.rar

    "CXF3.1.11客户端jar包.rar"是CXF框架的一个版本3.1.11的客户端组件集合,它包含了一系列必要的jar文件,使得开发者能够快速搭建和使用CXF进行Web服务的开发。 在Web服务开发中,CXF提供了两种主要的客户端API:...

    [免费]xercesImpl-2_9_1.jar-CSDN下载

    67) at org.apache.cxf.endpoint.ClientImpl.(ClientImpl.java:152) at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:255) at org.apache.cxf.endpoint.dynamic....

    cxf.xml,cxf-servlet.xml,cxf-extension-soap.xml

    <import resource="classpath:META-INF/cxf/cxf.xml"/> <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml"/> <import resource="classpath:META-INF/cxf/cxf-servlet.xml"/>

    CXF客户端生成器

    【CXF客户端生成器】是基于Apache CXF框架的一个实用工具,主要用于自动生成Java客户端代码,使得开发者可以方便地调用Web服务。Apache CXF是一个开源的SOAP和RESTful Web服务框架,它允许开发者创建和消费各种Web...

    CXF客户端调用例子

    CXF客户端调用例子展示了如何使用CXF来创建和消费Web服务。这个例子包含了服务端和客户端两部分,两者都是用Java语言编写的。 在Java中,CXF提供了丰富的API和工具,使得开发者能够方便地实现SOAP(Simple Object ...

    cxf的jar包.rar

    利用Apache CXF开发webservice接口需要用到的jar集合 cxf-core-3.0.15.jar cxf-rt-bindings-soap-3.0.15.jar cxf-rt-bindings-xml-3.0.15.jar cxf-rt-databinding-jaxb-3.0.15.jar cxf-rt-frontend-jaxws-3.0.15.jar...

    CXF客户端最少包

    【CXF客户端最少包】指的是在使用Apache CXF框架构建客户端应用时,为了实现基本的SOAP或RESTful服务调用,所需要最小化的依赖集合。在这个描述中,提到了两个核心的JAR文件:cxf-2.7.18.jar和fastjson-1.2.34.jar。...

    Cxf客户端及服务器端,实现客户端和服务器端的权限验证

    这通常通过修改CXF的`jetty.xml`或`cxf.xml`配置文件完成。 - 对应于WS-Security,需在服务接口上添加适当的注解,如`@WsSecurityPolicy`,并指定相应的策略。 2. **客户端配置**: - 配置CXF客户端,添加安全...

    CXF客户端,自动生成方式

    7. **异常处理**:CXF提供了丰富的异常处理机制,如`WebServiceException`,可以帮助开发者捕获并处理服务调用过程中可能出现的问题。 8. **测试与调试**:生成的客户端代码可以直接在MyEclipse中进行单元测试,...

    cxf客户端(对象,上传与下载文件支持断点传输)

    【标题】:“CXF客户端:对象参数,文件上传下载及断点续传功能” 在Java Web开发中,CXF框架广泛用于实现Web服务,包括SOAP和RESTful接口。本示例着重于CXF客户端如何处理对象参数传递以及支持文件的上传和下载,...

    cxf客户端出现GBK编码问题解决jar.rar

    这可能需要在服务端的XML配置文件(如cxf.xml或web.xml)中指定字符编码,或者在服务端代码中显式设置。 2. **客户端配置**:在CXF客户端,你需要配置HTTPConduit来指定GBK编码。可以通过以下方式: ```java ...

    prefix cannot be "null" when creating a QName

    在处理Web服务相关的Java应用程序时,可能会遇到一个名为“prefix cannot be 'null' when creating a QName”的异常。这个错误通常出现在尝试创建`QName`对象但提供的前缀为`null`的情况下。 ### 错误详情与解决...

    Java webservice cxf客户端调用demo和服务端

    Java WebService CXF客户端调用和服务端的实现是企业级应用程序中常见的通信方式,它基于标准的SOAP(Simple Object Access Protocol)协议,提供了一种在分布式环境中交换信息的方法。CXF是一个开源框架,它简化了...

    cxf创建客户端出现GBK编码问题解决的jar

    6. **配置Spring Bean**:如果你的CXF客户端是在Spring环境中运行,可以通过Spring配置文件来调整CXF客户端的相关属性,例如设置`<jaxws:endpoint>`的属性`encoding`。 7. **更新依赖的jar包**:有时候问题可能源于...

Global site tag (gtag.js) - Google Analytics