这里有新鲜出炉的 Java 函数式编程,程序狗速度看过来!
Java 程序设计语言
java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 程序设计语言和 Java 平台(即 JavaEE(j2ee), JavaME(j2me), JavaSE(j2se))的总称.
这篇文章主要介绍了详解 JAVA 调用 WCF 服务的示例代码, 小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧
这一篇将要解决 java 中调用 WCF 的问题,使用的依旧是上一篇中托管在 IIS 中的 WCF 服务,本来我是打算用 axis 来写这篇文章的,可就在我开始之前,无意中发现了在 java 包中自带的 wsimport 工具,用起来是极为爽快,而且也节省了配置 axis 的时间.所以,就它吧
其实在有了 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 -s client http://192.168.11.1/emp/EmployeeManagement.svc?wsdl, 然后就会发现在目录下生成了若干文件,其中有对应的 java 实体类文件,比如 Employee.java,还有复杂生成实体的 ObjectFactory,因为在这里使用的不是基础类型 String,Int 等,而是类 JAXBElement 这样的类型,ObjectFactory 可以帮助我们生成这些类型.
3. 开发程序
1. 在 eclipse 中新建 JAVA 项目,例如 testproject
2. 右键项目中的 src 文件夹,选择 Import
3. 点击 General 中的 File System,单击 Next
4. 在下一步中点击刚简历的目录,并全选所有文件夹
5. 新建测试文件 test.java
运行程序,出结果
import org.datacontract.schemas._2004._07.contracts. * ;
import com.microsoft.schemas._2003._10.serialization. * ;
import org.tempuri. * ;
public class test {
/**
* @param args
*/
public static void main(String[] args) {
//使用ObjectFactory帮助生成实体类对象
org.datacontract.schemas._2004._07.contracts.ObjectFactory factory = new org.datacontract.schemas._2004._07.contracts.ObjectFactory();
Employee emp = factory.createEmployee();
//设置属性,同样使用ObjectFactory帮助设置,因为这里的类型有别与基础类型
emp.setId(factory.createEmployeeId("dev001"));
emp.setName(factory.createEmployeeName("James White"));
emp.setDepartment(factory.createEmployeeDepartment("Development"));
//调用的方法略显古怪,需要注意
EmployeeManagement empManagement = new EmployeeManagement();
IEmployeeManagement iempManagement = empManagement.getBasicHttpBindingIEmployeeManagement();
SalaryDetail salaryDetail = iempManagement.getSalaryOfLastMonth(emp);
//输出结果
System.out.println("Employee ID:" + salaryDetail.getId().getValue());
System.out.println("Salary Date:" + salaryDetail.getDate().getMonth());
System.out.println("Salary:" + salaryDetail.getSalary().toString());
}
}
4. 结束语
来源: http://www.phperz.com/article/18/0115/353359.html