java端通过cxf调用.net端服务 - Keep Running
今天在项目的过程中,java服务端使用cxf动态调用.net服务的时候碰到的一些问题,现将笔记记录如下,已被日后查看。
-
CXF是 IONA的OpenSource ESB Celtix与 号称最快的Soap协议栈 XFire合并的 apache Incubate 项目。
CXF是一个JAX-WS API的实现。
CXF支持多种binding, transport。
CXF支持也支持除JAX-WS之外的服务模型,例如JBI,CORBA,SCA等。 - 网上资料:http://www.cnblogs.com/yg_zhang/archive/2010/11/15/1877658.html
-
在myeclipse上生成.net端的web service代理类,即web Service Client,步骤>右键项目>新建>其他>MyEclipse>Web Service>Web Service Client
- C#调用java 服务参考资料:http://blog.csdn.net/cheng110110/article/details/6440002
- java与.net通过wenservice进行相互调用:http://www.ibeifeng.com/tech.php?id=6105
-
View Code
1 /** 2 * PubService返回Stirng类型,参数Stirng类型 3 */ 4 @Override 5 public String PubService(String data) 6 { 7 String str = Usual.mEmpty; 8 String mReturn = "0001"; 9 String[] mStr = data.split(","); 10 if (mStr[0].equals("inlogin") && mStr[1].equals("inlogin")) 11 { 12 mReturn = "000"; 13 } 14 String serviceURL = "http://192.168.0.35/com.net/InService.asmx"; 15 try 16 { 17 18 JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); 19 // 这里也可用myeclipse建立Web Service Client,引用对象.class 20 factory.setServiceClass(InServiceSoap.class); 21 // 这里指定URL路径,如果InServiceSoap这个不是一个接口类的话, 22 //下面这句代码会报错,提示不是一个接口 23 //在使用java cxf的过程中,一定要使用接口。 24 25 factory.setAddress(serviceURL + "?wsdl"); 26 27 //QName函数的两个参数,第一个是命名空间,第二个是webservice的服务名 28 //第一个参数在.net服务发布时可以找到,也就是targetnamespace, 29 //第二个参数在java的接口实现类中可以找到,也就是serviceName。 30 factory.setServiceName(new QName("http://con.java.service/", "wss")); 31 32 //InServiceSoap是一个接口,由.net web Service Client生成。 33 InServiceSoap client = (InServiceSoap) factory.create(); 34 //通过生成的.net web Service Client调用服务的方法publishInformation 35 str = client.publishInformation(mStr[0], mReturn, "20000", "dfadasd"); 36 System.out.println("str:调用.net接口: "+str); 37 client = null; 38 factory = null; 39 } 40 catch (Exception e) 41 { 42 // TODO: handle exception 43 e.printStackTrace(); 44 } 45 finally 46 { 47 } 48 return mReturn; 49 }