服务端
@WebService
public interface HelloWorld {
@WebResult(name = "String")
String sayHello(@WebParam(name = "name") String name,
@WebParam(name = "sex") String sex);
void test();
}
@WebService
public class HelloWorldImpl implements HelloWorld {
public String sayHello(String name, String sex) {
if ("F".equals(sex)) {
return "Hello," + name + "小姐";
}
if ("M".equals(sex)) {
return "Hello," + name + "先生";
} else {
return "Hello," + name;
}
}
public void test() {
System.out.println("only test for privilege!");
}
}
在cxf服务端的方法中的参数上注解为ws调用的参数
跨协议@WebParam(name = "sex") 这部分不能少
客户端访问
public class TestHelloWorld {
public static void main(String[] args) throws Exception {
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress("http://localhost:8080/CFXDemoServer/services/HelloWorld");
call.setOperationName("sayHello");
call.addParameter("name", XMLType.XSD_STRING, ParameterMode.IN);
call.addParameter("sex", XMLType.XSD_STRING, ParameterMode.IN);
call.setReturnType(XMLType.XSD_STRING);
System.out.println(call.invoke(new Object[] { "harold!","l" }));
}
}
本文详细介绍了使用CXF框架在服务端定义WebService接口,并通过客户端进行远程过程调用的实现过程。重点展示了如何通过@WebParam和@WebResult注解来映射服务端方法的参数和返回值,以及如何在客户端正确配置调用地址、操作名、参数类型和返回类型。通过示例代码,清晰地展示了服务端接口定义、实现以及客户端调用的完整流程。
3775

被折叠的 条评论
为什么被折叠?



