webservice---基于web工程上写webservice
本节摘要:之前在一篇博客中介绍过如何写一个webservice(http://www.cnblogs.com/java-pan/archive/2011/11/25/axis_webservice.html),不过那个webservice是在工作项目中直接添加的,中间少了很多麻烦,不是白手起家总感觉前面一步一步的过程不清楚。myeclipse自带的也有如何新建一个webservice工程,这也不是我要说的,项目中这个也不实用,项目中都是在当前开发的web工程中写一个webservice,谁会再去新建一个工程,那不是扯淡吗?本节在一个已经存在的web工程中,来新建类、新建配置文件,发布webservice、访问webservice。基于axis1.4的版本来完成的。
preparation
1.在阅读本机之前你需要看以下相关知识:
JDBC;
JDBC的介绍这里就不说了,网上忒多的资料了,这个也是做java接触数据库时必会的
ibatis;
可以参考我之前的博客http://www.cnblogs.com/java-pan/archive/2012/03/21/ibatis.html
XStream;
可以参考我之前的博客http://www.cnblogs.com/java-pan/archive/2011/10/25/Object_xml.html
axis;
可以参考我之前的博客http://www.cnblogs.com/java-pan/archive/2011/11/25/axis_webservice.html
2.项目结构
myeclipse:6.5 tomcat:5.0 system:win7 JDK:项目的版本是1.5 编译采用的是1.4
说明:本节介绍的是基于axis的webservice,采用的版本为axis1.4
3.下载项目中用到的jar包
https://files.cnblogs.com/java-pan/lib-axis1.4.rar
以上链接包含下面的所有包。下载的jar包主要包含以下几部分:
(1)oracle数据库驱动包 :classes12.jar
(2)ibatis包:ibatis-2.3.4.jar
(3)xstream-1.2.1.jar
(4)axis包(从以下链接下载http://mirror.bjtu.edu.cn/apache/ws/axis/1_4/ 下载后解压把lib下所有包导入)
(5)activation.jar和mail.jar 建议导入的包
以上除最后一个jar包外,其它的程序运行必须导入。(可能axis不需要导入所有的包,不过我们就全部导入好了)
项目jar包的详细列表如下:
说明:lib下一共中13个jar包,截图的图片也有13个jar包,但是博客发布后显示的只有8个jar包,可以图片另存为看到所有的jar包。
4.class&mthod
JDBC:DriverManager、Connection、PreparedStatement、ResultSet
DriverManager:
getConnection(String url, String user, String password)获得一个Connection对象,参数依次为数据库驱动的url、用户名、密码
Connection:
prepareStatement(String sql)获得一个预处理对象PreparedStatement
PreparedStatement:
executeQuery()执行查询操作,返回一个结果集对象ResultSet,不要传入任何参数
ResultSet:
next()返回一个布尔类型的值,用于判断是否还有记录
Ibatis:SqlMapClient、SqlMapClientBuilder
SqlMapClient:
SqlMapClient buildSqlMapClient(Reader reader)传入一个reader对象,创建一个SqlMapClient 对象
startTransaction();开始事务
getCurrentConnection()获取当前连接,回滚事务的时候用到
endTransaction结束事务
SqlMapClientBuilder:
queryForObject(String s, Object obj)第一个参数为实体类对应的配置文件的id属性,第二个为传入的参数,此方法的返回值是一个Object对象
xstream:XStream
XStream:
alias(String name, Class type)设置节点的别名
alias(String name, Class type)设置某一元素节点的别名
toXML(Object obj)把对应的obj转换为xml格式的字符串
其他类:Reader、Resources、StringBuffer
Reader:java I/O对象,用于读取字符流的抽象类,这里就不再介绍,请查看JDK帮助文档
Resources:此类为ibatis的jar包中的类,非JDK的类
getResourceAsReader(String resource)对于resource路径的文件,获得一个Reader对象
StringBuffer:线程安全的可变字符序列
append(String str)将指定的字符串追加到此字符序列
toString()
返回此序列中数据的字符串表示形式
start
新建一个web工程,项目命名为WebService,按照工程目录新建对应的文件如下:
实体类-Dept.java
数据库连接文件-ConnectDataBase.java
实体类对应的映射文件-Dept.xml
数据库连接属性文件-SqlMap.properties
ibatis核心配置文件-SqlMapConfig.xml
定义查询服务的接口文件-IQueryInfoSV.java
定义查询服务的实现类-QueryInfoSVImpl.java
测试类-Test1.java 用于测试JDBC和ibatis的数据库连接是否正常
测试类-Test2.java 用于测试webservice服务是否可以正常调用
web.xml-项目配置文件
server-config.wsdd-webservice服务部署的配置文件
---把博客贴出来主要是请大家帮看看后面的问题,关于配置文件的介绍后面会加上详细的说明---
result
发布项目,启动tomcat。
运行Test1.java中的main方法,测试JDBC和ibatis数据库查询是否正常,查询结果如下:
在浏览器访问发布的wsdl
输入如下地址:http://127.0.0.1:8080/WebService/services/queryInfo?WSDL
访问界面如图:
运行Test2类中的main方法,测试结果如下图:
webservice服务存在以下2个问题:
(1)如上图所示,按说在浏览器中可以正常的访问wsdl的话,就说明服务已经发布好了。为什么客户端调用会报如此错误呢?
(2)如果我把访问的127.0.0.1改为localhost就不能正常的访问wsdl了,这个是什么原因呢?
急需大虾出现解决小弟的问题,我也在努力的查找中。跪求ing。
为方便各位大侠帮小弟查问题,源码下载地址如下:https://files.cnblogs.com/java-pan/WebService.rar