Services开源框架之CXF与在java程序中如何实现操作cmd执行网络命令

Apache CXF是一个开源的Services框架,CXF 帮助您利用 Frontend 编程 API 来构建和开发 Services ,像 JAX-WS 。这些 Services 可以支持多种协议,比如:SOAP、XML/HTTP、RESTful HTTP 或者 CORBA ,并且可以在多种传输协议上运行,比如:HTTP、JMS 或者 JBI,CXF 大大简化了 Services 的创建,同时它继承了 XFire 传统,一样可以天然地和 Spring 进行无缝集成。              ————摘自于《360百科》

  我们了解了CXF框架,那它是怎样搭建的呢?今天我就我学习的一些心得和总结和大家分享一下。我是利用cxf搭建的服务器来实现客户端向服务器发送一个ip地址,服务器将打开cmd进行ping,测试连通性。然后将测试的结果返回给客户端。

步骤:

a)建立一个web工程,将CXF的jar包导入进去。地址:http://download.csdn.net/detail/huangzebiao007/6380241

b)创建一个User类。(命名随意)

package com.zsl.service;
import java.io.Serializable;
public class User implements Serializable{
private String ip;
public String getIp() {
return ip;
}
public void setIp(String ip) {
this.ip = ip;
}
}
c)创建一个接口

package com.zsl.service;

import javax.jws.WebService;

import com.zsl.service.User;

@WebService 
public interface PingCommand {
String Ping(User user);

}
d)接口的实现类,这里的方法也实现了java程勋如何实现操作cmd执行网络命令

package com.zsl.service;


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedHashMap;
import java.util.Map;


import javax.jws.WebService;


import com.zsl.service.User;
import com.zsl.service.PingCommand;


@WebService(endpointInterface="com.zsl.service.PingCommand",serviceName="PingCommand")
public class PingCommandImpl implements PingCommand {
Map<Integer, User> users = new LinkedHashMap<Integer, User>();


public String Ping(User user)  {
StringBuffer buf=new StringBuffer();
    String s="";
    Process process;
    try {
process=Runtime.getRuntime().exec("cmd /c ping"+" "+user.getIp());
BufferedReader br=new BufferedReader(new InputStreamReader(process.getInputStream()));
    while((s=br.readLine())!=null)
    {
    buf.append(s+"\r\n");
    }
   
process.waitFor();

} catch (Exception e) {
e.printStackTrace();


String m=buf.toString();
    return m;
}


}
e)利用cxf创建服务器类

package com.zsl.service ;


import javax.xml.ws.Endpoint;


public class webServiceApp {
public static void main(String[] args) {  
         System.out.println("web service start");  
         PingCommandImpl implementor = new PingCommandImpl();  
         String address = "http://localhost:8080/pingCommand";  
         Endpoint.publish(address, implementor);  
         System.out.println("web service started");  
    }  


}
f)验证服务器正常启动与否打开浏览器在地址栏输入http://localhost:8080/pingCommand?wsdl如出现下图则成功启动。


h)写客户端的代码,用user.setIP()给客户端传递一个ip。

package com.zsl.client;


import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
import com.zsl.service.User;
import com.zsl.service.PingCommand;


public class PingRunClient {
public static void main(String[] args) {  
         
       //首先右键run as 运行com.hsy.server.webServiceApp类,然后再运行这段客户端代码  
       JaxWsProxyFactoryBean jwpfb = new JaxWsProxyFactoryBean();  
       jwpfb.setServiceClass(PingCommand.class);  
       jwpfb.setAddress("http://localhost:8080/pingCommand");  
       PingCommand pc = (PingCommand) jwpfb.create();  
       User user = new User();  
       user.setIp("127.0.0.1");
       System.out.println(pc.Ping(user));
         
   }  


}
i)先启动服务器,然后在启用客户端,这样服务器就会把ping的结果返回到客户端,我们就可以在控制台上看见了。

以上就是实现简单的Services开源框架CXF的小例子。在这个简单的程序中我们可以学到cxf的搭建和如何在java程序中如何利用cmd执行一些网络命令。


我简单的说一下我再写这个程序中所遇见的一些问题:

1:在运行的时候我利用的8080端口,总所周知我们的tomcat的端口就是8080,所以我们在启用cxf的时候一定要记住把tomcat关掉。

2:就是在导入包的时候余姚记住,一定要导正确,我再导入的时候也出现了错误,调试了好久,血的教训啊   大家铭记啊!

3:就是在client的地址一定要和服务器上的地址一致,最好是copy过去,错了的话将导致数据传不过去。

4:网络命令一定要记住ping和ip地址中间是由一个空格的,不然没有结果返回。

以上就是我所遇见的一些问题,如果有不妥之处欢迎指正!谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值