CXF测试报错(java.net.MalformedURLException: Invalid address. Endpoint address canno)

Eclipse_80 2011-01-26 02:33:28
警告: Interceptor for {http://iface.service.cxf.com/}Helloworld#{http://iface.service.cxf.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:255)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:516)
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 $Proxy33.sayHello(Unknown Source)
at com.cxf.client.HelloWorldClient.main(HelloWorldClient.java:25)
Caused by: java.net.MalformedURLException: Invalid address. Endpoint address cannot be null.
at org.apache.cxf.transport.http.HTTPConduit.getURL(HTTPConduit.java:871)
at org.apache.cxf.transport.http.HTTPConduit.getURL(HTTPConduit.java:853)
at org.apache.cxf.transport.http.HTTPConduit.setupURL(HTTPConduit.java:799)
at org.apache.cxf.transport.http.HTTPConduit.prepare(HTTPConduit.java:547)
at org.apache.cxf.interceptor.MessageSenderInterceptor.handleMessage(MessageSenderInterceptor.java:46)
... 8 more
Exception in thread "main" javax.xml.ws.WebServiceException: Could not send Message.
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:135)
at $Proxy33.sayHello(Unknown Source)
at com.cxf.client.HelloWorldClient.main(HelloWorldClient.java:25)
Caused by: java.net.MalformedURLException: Invalid address. Endpoint address cannot be null.
at org.apache.cxf.transport.http.HTTPConduit.getURL(HTTPConduit.java:871)
at org.apache.cxf.transport.http.HTTPConduit.getURL(HTTPConduit.java:853)
at org.apache.cxf.transport.http.HTTPConduit.setupURL(HTTPConduit.java:799)
at org.apache.cxf.transport.http.HTTPConduit.prepare(HTTPConduit.java:547)
at org.apache.cxf.interceptor.MessageSenderInterceptor.handleMessage(MessageSenderInterceptor.java:46)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:516)
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

代码如下:
接口HelloWorld:
package com.cxf.service.iface;

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

@WebService
public interface HelloWorld {
public String sayHello(@WebParam(name="text") String text);
}

实现HelloWorldImpl:
package com.cxf.service.impl;

import javax.jws.WebService;

import com.cxf.service.iface.HelloWorld;

@WebService(serviceName="Helloworld")
public class HelloWorldImpl implements HelloWorld {

public String sayHello(String text) {
return "hello " + text;
}

}

服务端HelloWorldService:
package com.cxf.service.app;

import javax.xml.ws.Endpoint;

import com.cxf.service.iface.HelloWorld;
import com.cxf.service.impl.HelloWorldImpl;

public class HelloWorldService {

/**
* @param args
*/
public static void main(String[] args) throws Exception {
HelloWorld hello = new HelloWorldImpl();
String address = "http://localhost:8080/MyService";
Endpoint.publish(address, hello);
System.out.println("服务已发布......");
}
}

客户端HelloWorldClient:
package com.cxf.client;

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

import com.cxf.service.iface.HelloWorld;

public class HelloWorldClient {
// private static String namespaceURI = "http://iface.service.cxf.com/";
// private static QName SERVICE_NAME = new QName(namespaceURI, "Helloworld");
// private static QName PORT_NAME = new QName(namespaceURI,"HelloworldPort");
//private static String namespaceURI = "http://iface.service.cxf.com/";
private static QName SERVICE_NAME = new QName("http://iface.service.cxf.com/", "Helloworld");
private static QName PORT_NAME = new QName("http://iface.service.cxf.com/","Helloworldport");

/**
* @param args
*/
public static void main(String[] args) {
Service service = Service.create(SERVICE_NAME);
String endpointAddress = "http://localhost:8080/MyService";
service.addPort(PORT_NAME, SOAPBinding.SOAP12HTTP_BINDING, endpointAddress);
HelloWorld hw = service.getPort(HelloWorld.class);
String info = hw.sayHello("测试");
System.out.println(info);
}

}

这个错到底是怎么回事?网上有说是QName那url的反斜杠没写(http://iface.service.cxf.com/),但是我写了的(经测试写和不写都报这个错),望大家指教!
...全文
825 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Eclipse_80 2012-08-15
  • 打赏
  • 举报
回复
嗯,问题在这里![Quote=引用 8 楼 的回复:]
可能是服务器下接口的包名与客户端下接口所在的包名不一致
接口HelloWorld.java服务器下包名是com.abc.webservice,那么客户端下接口HelloWorld.java所在的包名也必须是com.abc.webservice
[/Quote]
zhang961174986 2012-08-13
  • 打赏
  • 举报
回复
可能是服务器下接口的包名与客户端下接口所在的包名不一致
接口HelloWorld.java服务器下包名是com.abc.webservice,那么客户端下接口HelloWorld.java所在的包名也必须是com.abc.webservice
Eclipse_80 2012-02-13
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 cheney_0723 的回复:]

我也遇到了 能帮我看看嘛 ? 我的例子和他的例子一样

2012/02/13 14:39:53 org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromClass
情報: Creating Service {http://server.ws.demo/}HelloWorld from class……
[/Quote]
代码呢,也发出来?看看是不是访问路径错误?
还有,webService里面方法不能重载!
cheney_0723 2012-02-13
  • 打赏
  • 举报
回复
我也遇到了 能帮我看看嘛 ? 我的例子和他的例子一样

2012/02/13 14:39:53 org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromClass
情報: Creating Service {http://server.ws.demo/}HelloWorld from class demo.ws.server.HelloWorld
2012/02/13 14:39:54 org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromClass
情報: Creating Service {http://server.ws.demo/}HelloWorld from class demo.ws.server.HelloWorld
2012/02/13 14:39:54 org.apache.cxf.phase.PhaseInterceptorChain doDefaultLogging
警告: Interceptor for {http://server.ws.demo/}HelloWorld#{http://server.ws.demo/}sayHi 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 $Proxy32.sayHi(Unknown Source)
at demo.ws.client.HelloWorldClient.main(HelloWorldClient.java:22)
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 $Proxy32.sayHi(Unknown Source)
at demo.ws.client.HelloWorldClient.main(HelloWorldClient.java:22)
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

[Quote=引用 5 楼 doop1120 的回复:]

把你错误发出来,这个问题时间长了,我给忘记了
[/Quote]
Eclipse_80 2012-01-31
  • 打赏
  • 举报
回复
把你错误发出来,这个问题时间长了,我给忘记了
Bilinma 2012-01-31
  • 打赏
  • 举报
回复
请问这个是怎么解决的?我也碰到了
Eclipse_80 2011-02-11
  • 打赏
  • 举报
回复
谢谢火龙果!最近一直在研究CXF,发问题时对CXF一点都不懂,现在问题已解决!
  • 打赏
  • 举报
回复
private static QName PORT_NAME = new QName("http://iface.service.cxf.com/","Helloworldport");

把 Helloworldport 改成 HelloworldPort 再试试看。

这个 Port 的名字可以通过 http://localhost:8080/MyService?wsdl 找到

50,503

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧