java 舍入误差 博客_HIMMEL
使用XFire与Spring开发Web Service
源代码下载(三个样例工程Maven版本) xfire-src.zip
相关lib文件请到XFire官方网站(见参考) 下载发布版本。
实现功能与特点
基于J2EE平台的Web Service服务
开发方便,配置简单
设计接口
实现服务
配置暴露接口
XFire将自动生成对应的wsdl
支持高级详细配置
与Spring无缝集成
运行环境
JDK 1.4+
Tomcat 4.0+ / WebLogic 8.1 (需要特殊配置,见附录)未测试其他环境
开发平台
实施步骤
概述
建立一个Java Project用于Domain实体和Web Service接口,这个工程的输出是一个jar包,为Web Service工程和Web Service Client共享。
建立WTP动态WEB工程部署Web Service
建立Java Project使用Web Service (Web Service Client)
新建Java Project
建立普通Java Project 以下称为common工程
如果使用Maven,项目依赖
javax.mail
1.4
普通情况需要加入如下lib
activation-1.1.jar
mail-1.4.jar
编写类 org.ave7.xfire.domain.User
org.ave7.xfire.domain.User.java
packageorg.ave7.xfire.domain;importjava.io.Serializable;importjava.util.Date;publicclassUserimplementsSerializable {privatestaticfinallongserialVersionUID=6517808321041980976L;privateLong userId;privateString accountId;privateString userName;privateDate lastLogin;publicString getAccountId() {returnaccountId;
}publicvoidsetAccountId(String accountId) {this.accountId=accountId;
}publicDate getLastLogin() {returnlastLogin;
}publicvoidsetLastLogin(Date lastLogin) {this.lastLogin=lastLogin;
}publicLong getUserId() {returnuserId;
}publicvoidsetUserId(Long userId) {this.userId=userId;
}publicString getUserName() {returnuserName;
}publicvoidsetUserName(String userName) {this.userName=userName;
}
}
编写接口 org.ave7.xfire.ws.UserService
org.ave7.xfire.ws.UserService.javapackageorg.ave7.xfire.ws;importorg.ave7.xfire.domain.User;publicinterfaceUserService {publicUser queryUserByAccoutId(String accountId);publicvoidcreateUser(User user);
}
新建WTP动态WEB工程
配置WTP加入Tomcat Server Runtime
选择Windows -> Preference
在左侧选择Server->Installed Runtime 添加Tomcat
新建工程,选择Dynamic Web Project 输入Project Name: XFireService
设置运行环境为Dynamic Web Module 2.3 , JDK 1.4
如果需要结合Maven,请如下配置,否则使用默认即可
如果使用Maven请注入如下依赖以及之前的Common工程,否则根据后面的列表复制lib文件到对应目录
org.codehaus.xfire
xfire-aegis
1.2.4
org.codehaus.xfire
xfire-spring
1.2.4
xalan
xalan
2.7.0
Lib文件列表
xbean-2.2.0.jar
qdox-1.5.jar
commons-attributes-api-2.1.jar
ant-1.5.jar
wstx-asl-3.2.0.jar
stax-utils-20040917.jar
commons-httpclient-3.0.jar
spring-1.2.6.jar
XmlSchema-1.1.jar
stax-api-1.0.1.jar
jaxen-1.1-beta-9.jar
xfire-annotations-1.2.4.jar
xfire-aegis-1.2.4.jar
xfire-core-1.2.4.jar
xfire-spring-1.2.4.jar
xfire-xmlbeans-1.2.4.jar
jdom-1.0.jar
xbean-spring-2.7.jar
wsdl4j-1.6.1.jar
commons-beanutils-1.7.0.jar
activation-1.1.jar
mail-1.4.jar
commons-codec-1.3.jar
xmlParserAPIs-2.6.2.jar
xercesImpl-2.6.2.jar
junit-3.8.1.jar
commons-logging-1.0.4.jar
xalan-2.7.0.jar
实现服务
org.ave7.xfire.ws.UserServiceImpl.java
packageorg.ave7.xfire.ws;importjava.rmi.RemoteException;importjava.util.Date;importorg.apache.commons.logging.Log;importorg.apache.commons.logging.LogFactory;importorg.ave7.xfire.domain.User;publicclassUserServiceImplimplementsUserService {privatestaticfinalLog log=LogFactory.getLog(UserServiceImpl.class);publicvoidcreateUser(User user)throwsRemoteException {
log.debug(“createUser user=”+user);
}publicUser queryUserByAccoutId(String accountId)throwsRemoteException {
log.debug(“accountId=”+accountId);
User user=newUser();
user.setAccountId(“testAccount”);
user.setLastLogin(newDate());
user.setUserName(“测试用户“);
user.setUserId(newLong(123L));returnuser;
}
}
利用Spring、XFire装配与暴露服务
在web.xml配置相关组件
<?xml version=“1.0″ encoding=“UTF-8″?>web-app PUBLIC “-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN”
“http://java.sun.com/dtd/web-app_2_3.dtd”>XFireServicecontextConfigLocationclasspath:applicationContext*.xmlorg.springframework.web.context.ContextLoaderListenerxfireorg.codehaus.xfire.spring.XFireSpringServletxfire/service/*
在applicationContext.xml配置相关服务
<?xml version=“1.0″ encoding=“UTF-8″?>beans PUBLIC “-//SPRING//DTD BEAN//EN”
“http://www.springframework.org/dtd/spring-beans.dtd”>
测试并访问服务
检查lib文件夹,Maven用户注意添加对common工程的依赖,其他情况请把common工程导出的jar包复制到web-inf/lib目录
在WTP中添加服务器,部署应用
在WTP中利用Web Service Explore测试SOAP方式,在WTP工具栏选择
最右侧按钮
点击右上角进入WSDL page
点击WSDL Main节点输入服务wsdl地址,点击
列出所有的可用服务,选择服务测试
测试queryUserByAccountId
点击结果中的Source可以看到SOAP报文
利用XFire实现客户端
新建一个普通Java工程,lib中引用XFire相关包
如果使用Maven添加如下依赖以及对common工程的引用
org.codehaus.xfire
xfire-aegis
1.2.4
普通Java工程添加如下lib以及对common工程的引用
activation-1.1.jar
commons-codec-1.3.jar
commons-httpclient-3.0.jar
commons-logging-1.0.4.jar
jaxen-1.1-beta-9.jar
jdom-1.0.jar
junit-3.8.1.jar
mail-1.4.jar
stax-api-1.0.1.jar
stax-utils-20040917.jar
wsdl4j-1.6.1.jar
wstx-asl-3.2.0.jar
xercesImpl-2.6.2.jar
xfire-aegis-1.2.4.jar
xfire-core-1.2.4.jar
xmlParserAPIs-2.6.2.jar
XmlSchema-1.1.jar
编写客户端程序
org.ave7.xfire.client.MyClient.java
packageorg.ave7.xfire.client;importjava.net.MalformedURLException;importjava.rmi.RemoteException;importorg.ave7.xfire.domain.User;importorg.ave7.xfire.ws.UserService;importorg.codehaus.xfire.client.XFireProxyFactory;importorg.codehaus.xfire.service.Service;importorg.codehaus.xfire.service.binding.ObjectServiceFactory;publicclassMyClient {publicstaticvoidmain(String[] args) {try{
Service serviceModel=newObjectServiceFactory()
.create(UserService.class);
UserService service=(UserService)newXFireProxyFactory().create(
serviceModel,
“http://localhost:8080/XFireService/service/UserService”);User user=service.queryUserByAccoutId(“123″);
System.out
.println(“userId=”+user.getUserId()+“, userName=”+user.getUserName()+“, lastLogin=”+user.getLastLogin());
}catch(MalformedURLException e) {
e.printStackTrace();
}catch(RemoteException e) {
e.printStackTrace();
}
}
}
运行。控制台打印输出
2007-8-16 10:25:52 org.codehaus.xfire.aegis.type.DefaultTypeMappingRegistry crea
teTypeCreator
信息: Couldn’t find Java 5 module on classpath. Annotation mappings will not be su
pported.
userId=123, userName=测试用户, lastLogin=Thu Aug 16 10:25:53 CST 2007
扩展主题
利用MTOM传输二进制对象(文件)
MTOM是XFire的一个组件,可以协助利用压缩等手段更快的在网络上传输base64的SOAP对象
MTOM以及aegis默认支持如下几种java对象的数据
byte[]
javax.activation.DataHandler
javax.activation.DataSource
配置启用MTOM
在Spring配置文件中需要MTOM的服务中加入如下配置
在客户端编写传输程序
Service serviceModel=newObjectServiceFactory()
.create(UserService.class);
UserService service=(UserService)newXFireProxyFactory().create(
serviceModel,
“http://localhost:8080/XFireService/service/UserService”);Client client=Client.getInstance(service);
client.setProperty(“mtom-enabled”, “true”);
client.setProperty(HttpTransport.CHUNKING_ENABLED, “true”);
User user=service.queryUserByAccoutId(“123″);
System.out
.println(“userId=”+user.getUserId()+“, userName=”+user.getUserName()+“, lastLogin=”+user.getLastLogin());
ByteArrayDataSource byteData=newByteArrayDataSource(
“Test Sending Byte”.getBytes(), “text/plain; charset=UTF-8″);
service.transferDataSource(byteData);
附录
XFire在WebLogic 8.1中的配置
Add the QName JAR file (qname.jar) into the WEB-INF/lib folder in your WAR file
Add a file weblogic.xml into the WEB-INF folder in your WAR file
weblogic-web-app PUBLIC
“-//BEA Systems, Inc.//DTD Web Application 8.1//EN”
“http://www.bea.com/servers/wls810/dtd/weblogic810-web-jar.dtd”>true
参考
java 舍入误差 博客_HIMMEL相关推荐
- [java手把手教程][第二季]java后端博客系统文章系统——No10
项目github地址:github.com/pc859107393- 实时项目同步的地址是国内的码云:git.oschina.net/859107393/m- 我的简书首页是:www.jianshu. ...
- Java 开源博客 Solo 1.6.0 发布 - 新后台
简介 Solo 是一款一个命令就能搭建好的 Java 开源博客系统,并内置了 15+ 套精心制作的皮肤.除此之外,Solo 还有着非常活跃的社区,文章分享到社区后可以让很多人看到,产生丰富的交流互动. ...
- java毕业论文_【毕业论文】基于java的博客网站设计与开发毕业论文(word文档)
<[毕业论文]基于java的博客网站设计与开发毕业论文.doc>由会员分享,可免费在线阅读全文,更多与<[毕业论文]基于java的博客网站设计与开发毕业论文(word文档)>相 ...
- JAVA个人博客系统设计与实现 毕业设计开题报告
本科生毕业论文 基于Java(springboot框架)个人博客系统 开题报告 学 院: 专 业: 计算机科学与技术 年 级: 学生姓名: 指导教师: XXXX大学本科生毕业 ...
- java个人博客系统代码下载_java个人博客系统代码
利用现存框架可以更快开发系统.所以选 择 Java 技术作为 blog 的开发工具. 为了增加系统的吞吐量,提高并发 +申请认证 文档贡献者 胡进全 计算机网络管理员 ...... javaweb课程 ...
- 用开源博客系统OneBlog来搭建自己的个人技术博客网站(java版博客系统)
java版博客系统 一直想搭建一个个人的博客,方便记录和分享一些技术点,在网上也找了一圈,最终在开源中国中发现了一款很不错的java版的博客系统 https://gitee.com/yadong.zh ...
- 记录自己第一个java学习博客
记录自己第一个java学习博客 阿里java规范 弄懂 JRE.JDK.JVM 之间的区别与联系 DOS常用命令 常用mac终端命令 今天我学习了java第一个程序打印出helloworld! pac ...
- java开源博客系统solo_Solo Java 开源博客
Solo 是一款一个命令就能搭建好的 Java 开源博客系统,如果你想开个独立博客,请一定不要错过!2.5.0 版本主要支持了 Markdown/JSON 格式数据导出,并改进了 Markdown 渲 ...
- java毕业设计博客管理系统Mybatis+系统+数据库+调试部署
java毕业设计博客管理系统Mybatis+系统+数据库+调试部署 java毕业设计博客管理系统Mybatis+系统+数据库+调试部署 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 开 ...
最新文章
- 网站优化中导致关键词排名不稳定的原因有哪些?
- ProtoBuf开发者指南
- 人民币小写金额转大写金额
- 用Blazor技术封装G2Plot实现Charts组件
- 11年亚锦赛球员数据_2020年11月楼市数据更新!全美房屋中间价持续上涨
- ios中获取各种文件的目录路径方法
- linux 新建文件夹命令
- 黑龙江工程学院锐捷校园网连接路由器免认证
- mysql表结构指哪些_gp数据库查看表结构
- project安装教程/包
- simulink中不能改名_王者荣耀:万格改名教学,空白名、重复名、个性符号名改法技巧!...
- 一款自制的视频录制软件
- 做自媒体如何快速实现财务自由
- modelsim is exiting with code:211 10秒后自动关闭退出
- mysql中的锁(表锁,行锁)
- android开发过程中遇到的问题
- 计算机开机关响五声原因,电脑开机后出现5声报警短响怎么办_电脑开机后出现5声报警短响的解决方法...
- 全球与中国微型翘板开关市场现状及未来发展趋势
- canfd收不到数据_CAN-FD协议浅析
- Navicat连接Linux-MySQL
热门文章
- 快速理解Vue 使用 vm.$set 解决对象新增属性不能响应的问题
- 在wincc中编辑语言c的另一个应用领域是关于动态向导的创建,wincc的c语言基础
- slf4j的log.warn()的参数问题研究
- 如何安装 Elasticsearch
- 联想Y7000P 电池充不进电以及电量为零
- poi设置word表格单元格宽度_poi,word,表格样式
- java变形金刚中文版_[原创]RC4、Base64魔改看雪CTF-变形金刚学习笔记
- 浙大公共管理硕士(MPA)项目的学费水平如何?
- 学校门口保安啃完这份524页“Java中高级学习笔记”都能拿13k了,你还不行动起来?
- 谷歌Chrome清除秘密进行加密货币挖矿的浏览器插件