基于web工程上写webservice

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

Dept

数据库连接文件-ConnectDataBase.java

ConnectDataBase

实体类对应的映射文件-Dept.xml

Dept

数据库连接属性文件-SqlMap.properties

SqlMap.properties

ibatis核心配置文件-SqlMapConfig.xml

SqlMapConfig.xml

定义查询服务的接口文件-IQueryInfoSV.java

IQueryInfoSV

定义查询服务的实现类-QueryInfoSVImpl.java

QueryInfoSVImpl

测试类-Test1.java 用于测试JDBC和ibatis的数据库连接是否正常

Test1

测试类-Test2.java 用于测试webservice服务是否可以正常调用

Test2

web.xml-项目配置文件

Web.xml

server-config.wsdd-webservice服务部署的配置文件

server-config.wsdd

---把博客贴出来主要是请大家帮看看后面的问题,关于配置文件的介绍后面会加上详细的说明---

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

 
标签: webservice
原文地址:https://www.cnblogs.com/Leo_wl/p/2478569.html