使用WCF进行跨平台开发之三(JAVA调用WCF服务)
2012-11-03 16:57
621 查看
前两篇写了在.net中和php中调用WCF。这一篇将要解决java中调用WCF的问题,使用的依旧是上一篇中托管在IIS中的WCF服务,本来我是打算用axis来写这篇文章的,可就在我开始之前,无意中发现了在java包中自带的wsimport工具,用起来是极为爽快,而且也节省了配置axis的时间。所以,就它吧
其实在有了wsimport,在java调用wcf的时候是极为简单的,当然这是建立在使用不太复杂的服务的情况下,如果还要考虑安全验证、发布订阅等问题,还是相对复杂的,但是这三篇文章没准备写那么多,只是想能把跨平台这三个字真的应用在实践中。起一个抛砖引玉的作用吧。
打开命令行,cd到以上建立的目录x:/workspace/EmployeeManager/,然后执行命令:
import–sclienthttp://192.168.11.1/emp/EmployeeManagement.svc?wsdl,然后就会发现在目录下生成了若干文件,其中有对应的java实体类文件,比如Employee.java,还有复杂生成实体的ObjectFactory,因为在这里使用的不是基础类型String、Int等,而是类JAXBElement<SalaryDetail>这样的类型,ObjectFactory可以帮助我们生成这些类型。
2.右键项目中的src文件夹,选择Import
3.点击General中的FileSystem,单击Next
4.在下一步中点击刚简历的目录,并全选所有文件夹
5.新建测试文件test.java
[/code]
运行程序,出结果
其实在有了wsimport,在java调用wcf的时候是极为简单的,当然这是建立在使用不太复杂的服务的情况下,如果还要考虑安全验证、发布订阅等问题,还是相对复杂的,但是这三篇文章没准备写那么多,只是想能把跨平台这三个字真的应用在实践中。起一个抛砖引玉的作用吧。
1.开发必备
这么说,只要是做java开发的,都不用看这一个章节啦,jdk+eclipse,甚至可以不使用eclipse,因为上面提到的wsimport工具是在java安装后的bin目录的一个可执行程序。如果钥匙使用axis,eclipse才是必须的。2.生成WCF客户端
使用的就是上面提到的wsimport,如果您正确的配置了java环境变量,就可以直接在控制台中使用了,简历文件夹x:/workspace/EmployeeManager/client打开命令行,cd到以上建立的目录x:/workspace/EmployeeManager/,然后执行命令:
import–sclient
3.开发程序
1.在eclipse中新建JAVA项目,例如testproject2.右键项目中的src文件夹,选择Import
3.点击General中的FileSystem,单击Next
4.在下一步中点击刚简历的目录,并全选所有文件夹
5.新建测试文件test.java
[code]importorg.datacontract.schemas._2004._07.contracts.*;
importcom.microsoft.schemas._2003._10.serialization.*;
importorg.tempuri.*;
publicclasstest{
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
//使用ObjectFactory帮助生成实体类对象
org.datacontract.schemas._2004._07.contracts.ObjectFactoryfactory=neworg.datacontract.schemas._2004._07.contracts.ObjectFactory();
Employeeemp=factory.createEmployee();
//设置属性,同样使用ObjectFactory帮助设置,因为这里的类型有别与基础类型
emp.setId(factory.createEmployeeId("dev001"));
emp.setName(factory.createEmployeeName("JamesWhite"));
emp.setDepartment(factory.createEmployeeDepartment("Development"));
//调用的方法略显古怪,需要注意
EmployeeManagementempManagement=newEmployeeManagement();
IEmployeeManagementiempManagement=empManagement.getBasicHttpBindingIEmployeeManagement();
SalaryDetailsalaryDetail=iempManagement.getSalaryOfLastMonth(emp);
//输出结果
System.out.println("EmployeeID:"+salaryDetail.getId().getValue());
System.out.println("SalaryDate:"+salaryDetail.getDate().getMonth());
System.out.println("Salary:"+salaryDetail.getSalary().toString());
}
}
[/code]
运行程序,出结果
4.结束语
这个。。。。之后再写,,,累了,,吃饭去!!!相关文章推荐
- 使用WCF进行跨平台开发之二(IIS托管WCF服务并使用php平台调用)
- 使用WCF进行跨平台开发之一(WCF的实现、控制台托管与.net平台的调用)
- 使用WCF进行跨平台开发之一(WCF的实现、控制台托管与.net平台的调用)
- 使用WCF进行跨平台开发之一(WCF的实现、控制台托管与.net平台的调用)
- WCF揭秘——使用AJAX+WCF服务进行页面开发
- 用WCF开发的服务给Java的客户端调用
- WCF揭秘——使用AJAX+WCF服务进行页面开发
- 使用实时 Java 进行开发,第 2 部分: 改善服务质量
- CXF之使用工厂方法(java代码)发布服务与进行客户端调用
- 使用 JRuby 和 Swing 进行跨平台开发
- C# 调用JAVA(使用axis)开发的webservice 提示错误的问题
- 使用Java进行RS232C端口的开发
- java中使用rmi进行远程方法调用
- JAVA使用XFire开发Web Service客户端几种调用方式
- 可以使用可用的服务和参数调用在“eWorld.WCFImplement.ServiceImplement.ImageArchiveService”类型上使用“Autofac.Core.Activators.Reflection.DefaultConstructorFinder”找到的构造函数: 无法解析参数'eWorld.WCFBLL.ImageArchive.IDocumentOperation
- WCF开发实战系列四:使用Windows服务发布WCF服务
- SpringBoot使用FeignClient进行服务间的调用,传递headers信息
- 使用Web请求调用WCF服务
- WCF开发实战系列二:使用IIS发布WCF服务
- 使用Eclipse-Maven-git做Java开发(12)--使用osc的git服务托管代码