今天在学习使用spring+cxf发布webservice时遇到个问题,我原来是用
<jaxws:endpoint id="helloWorld" implementor="org.andy.cxf.HelloWorldImpl"
address="/HelloWorld" />
来发布的,但是有个问题,是方法发布不上去,调用的时候会报错,原因是我的两个文件不在同一级目录下
将impl移到上面来就可以了
但是这样做的话不够规范,为什么要这样做我也不明白,所以我换了一种发布的方法-jaxws:server,换了之后按照图一的写法可以正确的发布webservice,现在把代码贴出来
<!-- 这是实现类 -->
<bean id="HelloWorldImpl" class="org.andy.cxf.impl.HelloWorldImpl" />
<!-- org.andy.cxf.HelloWorld 是接口的路径-->
<jaxws:server serviceClass="org.andy.cxf.HelloWorld"
address="/HelloWorld">
<jaxws:serviceBean>
<ref bean="HelloWorldImpl" />
</jaxws:serviceBean>
</jaxws:server>
最后把客户端调用的方法贴出来,这种方式可以不依赖服务端的类
JaxWsDynamicClientFactory clientFactory = JaxWsDynamicClientFactory.newInstance();
Client client = (Client) clientFactory.createClient("http://localhost:8080/springmvc_hibernate_demo/webservice/HelloWorld?wsdl");
// invoke 第一个参数为要调用的webservices的方法,后面参数为方法入参(对应方法的参数)
Object[] result = client.invoke("sayHello");
System.out.println(result[0]);
至于为什么使用jaxws:endpoint发布必须要两个文件在同意目录下请高手解答!
这是我的代码实例