最近突然发现原来调用webservice服务端如此的方便,于是自己看了看,这种是使用cxf的JaxWsDynamicclientFactory动态调用的,主要时间花在了找包的时间上,另外,这种方式虽然调用方便,但是每一次调用都会扫描到接口中的所有方法,所以叫动态。下面直接看下具体的:
1.服务端
我采用的是JDK自带的webService注解方式,JDK1.6以上支持
package com.bing.log;
import java.util.Map;
import javax.jws.WebMethod;
import javax.jws.WebService;
@WebService
public class RouteLog{
@WebMethod public void writeLogMsg(String msg) { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printstacktrace(); } SysWriteLog.writeLog(msg); } @WebMethod public void writeLogMsg2(String msg,String msg2) { System.out.println("222"); SysWriteLog.writeLog(msg); }
}
发布接口
package com.bing.client;
import javax.xml.ws.Endpoint;
import com.bing.log.RouteLog;
public class LogServer {
public static void main(String[] args) {
System.out.println(“正在发布…”);
Endpoint endpoint =Endpoint.publish(“http://192.168.0.104/routeLog“,new RouteLog());
System.out.println(“发布成功..”);
}
}
2.客户端
我选取的是cxf 3.0.4的包
程序中需要依赖的最少包,本地maven资源库不全,不能直接提供pom文件
package com.bing.util;
import org.apache.cxf.endpoint.Client;
import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicclientFactory;
import org.apache.cxf.transport.http.HTTPConduit;
import org.apache.cxf.transports.http.configuration.HTTPClientPolicy;
public class AppUtil {
/** * * 远程调用WebService * * @param methodName 方法类型 * @param param 参数 * @return * @throws Exception */ public static Object[] routeServer(String methodName,Object param) throws Exception{ String url = "http://192.168.0.104/routeLog?wsdl"; JaxWsDynamicclientFactory dcf = JaxWsDynamicclientFactory.newInstance(); HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy(); // 策略 httpClientPolicy.setConnectionTimeout( 36000 ); //连接超时 httpClientPolicy.setAllowChunking( false ); httpClientPolicy.setReceiveTimeout( 10000 ); //接收超时 Client client = dcf.createClient(url); HTTPConduit http = (HTTPConduit) client.getConduit(); http.setClient(httpClientPolicy); return client.invoke(methodName,param); }
}
package com.bing.util;
/**
*
* @author Bing
*
* cxf动态调用WebService
*
*/
public class Client {
public static void main(String[] args) throws Exception {
Object[] o = AppUtil.routeServer(“writeLogMsg”,new Object[]{“eeee”});
Object[] o2= AppUtil.routeServer(“writeLogMsg2”,new Object[]{“eeee”,”eeeeeeettt”});
//System.out.println(o.length);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。