您的位置:首页 > 编程语言 > Java开发

最近用CXF webservice做了服务端

2016-06-08 14:53 405 查看
新建一个java 项目:

第一步导入webservice所依赖的jar包 可以http://download.csdn.net/detail/pengyong_520/9544595 去下载

第二步在项目中新增一个interface接口

@WebService

public interface HelloWebService {



String sayHi(@WebParam(name="text",targetNamespace = "http://com.py.server/", mode = WebParam.Mode.IN)String text);  




    String sayHiToUser(User user);  




    String[] SayHiToUserList(List<User> userList);  

}


注意:@WebService注明是WebService接口
接口中的方法的参数一定要以这种方式,否则客户端调用的时候CXF服务端会接收不到参数的值,name:参数名称,可不写(建议写上),targetNamespace:命名空间,一定要填写上,默认是包名反过来的顺序,mode:参数类型,IN表示输入。

第三步创建一个类去实现HelloWebService 接口

@WebService(endpointInterface="com.py.server.HelloWebService",serviceName="HelloWebService")  

public class HelloWebServiceImpl implements HelloWebService {

public String sayHi(@WebParam(name = "text",targetNamespace = "http://com.py.impl/", mode = WebParam.Mode.IN) String text) {
System.out.println("我是服务端----sayHi");
return "Hello,"+text;  
}

public String sayHiToUser(User user) {
return "Hello,"+user.getUserName()+"你的年龄是:"+user.getAge();  
}

public String[] SayHiToUserList(List<User> userList) {
// TODO Auto-generated method stub
return null;
}

}

第四步在定义一个POJO对象

public class User implements Serializable{
private String userName;
private String sex;
private Integer age;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public User(String userName, String sex, Integer age) {
this.userName = userName;
this.sex = sex;
this.age = age;
}
public User() {

}

}

第五步写一个服务类去启动webService

public class WebServiceApp {
public static void main(String[] args) {

// System.out.println("web service start");  

// HelloWebServiceImpl implementor = new HelloWebServiceImpl();  

//         String address = "http://localhost:8080/webServiceOne";  

//         //Endpoint.publish(address, implementor);  

//         System.out.println("web service started");  

JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean();

        factory.setServiceClass(HelloWebServiceImpl.class);

//address可以自定义 这个作为你要给客户端连接的地址

        factory.setAddress("http://localhost:9000/ws/welcome");

        //添加cfx自定义的日志拦截器

        factory.getInInterceptors().add(new LoggingInInterceptor());  

        factory.getOutInterceptors().add(new LoggingInInterceptor()); 

        Server server = factory.create();

        server.start();
}

}

启动成功在浏览器输入http://localhost:9000/ws/welcome?wsdl
会出现以下效果



这基本上说明配置webservice 成功了

第六步最后在项目中写一个小测试类

public class HelloWebServiceClient {
public static void main(String[] args) {
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
       
factory.setAddress("http://localhost:9000/ws/welcome");
       
factory.setServiceClass(HelloWebService.class);
       
//客户端添加cfx日志拦截器
       
factory.getInInterceptors().add(new LoggingInInterceptor());  
       
factory.getOutInterceptors().add(new LoggingOutInterceptor()); 
       
HelloWebService welcome = (HelloWebService) factory.create();
       
//system.out.println(welcome.welcomemessage("this if first cfx ws ."));
       
User user = new User();
       
user.setUserName("彭**");
       
user.setSex("男");
       
user.setAge(22);
       
System.out.println(welcome.sayHiToUser(user));

    }

}

以上几步就完成了webService的服务端了,至于客户端可以通过wsdl2java 命令生成
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  cxf web service java