axis2之webservice新手超详细教程
更新时间:2024-01-30 11:28:01 阅读量: 教育文库 文档下载
AXIS2之WEBSERVICE新手超详细教程
---------------尚明
Axis2是一套崭新的WebService引擎,该版本是对Axis1.x重新设计的产物。Axis2不仅支持SOAP1.1和SOAP1.2,还集成了非常流行的REST WebService,同时还支持Spring、JSON等技术,本教程是主要阐述如何构建一个基本的Axis2 webservice应用,里面的许多环节高手可直接略过,本教程完全针对新手。
一、 环境安装 安装myeclipse 下载地址:
http://www.xlpan.com/file/4238159/48030981-6b56-40a4-a93b-8f424ee4f33a 安装mysql 下载地址:
http://www.xlpan.com/file/4238159/de64cf2f-4217-4e11-bb98-8e6c5dd24155
安装mysql-workbench(mysql可视化工具) 下载地址:
http://www.xlpan.com/file/4238159/becf913f-56a6-4d68-b248-134113b73535 安装tomcat
下载地址:
http://www.xlpan.com/file/4238159/ec6a2250-99ff-464e-a978-be184c96e4e7 下载Axis2服务包 下载地址:
http://www.xlpan.com/file/4238159/bb3db6e3-2f7d-4343-b472-c1fa714dba95 下载Axis2开发插件包 下载地址:
http://www.xlpan.com/file/4238159/aa39505f-079b-43be-9479-15a2d3e98cbb 安装jdk 下载地址:
http://www.xlpan.com/file/4238159/7ba342f9-277f-4b9c-b5e7-b0c5b7dfc151
二、
环境配置 1) Java环境配置
a) 设置JAVA_HOME 图1.
图2
设置JAVA_HOME= D:\\Program Files\\Java\\jdk1.6.0_10 * D:\\Program Files\\Java\\jdk1.6.0_10为笔者本机的JDK安装目录,请开发者根据实际安装路径来填写,注意环境变量最后面不能加分号,D:\\Program Files\\Java\\jdk1.6.0_10;这么写是错误的。 b) 设置CLASSPATH 图1
设置
CLASSPATH= .;%JAVA_HOME%\\lib;%JAVA_HOME%\\lib\\tools.jar
* 要加.表示当前路径 c) 设置path
设置
path=%JAVA_HOME%\\bin;%JAVA_HOME%\\jre\\bin
2) tomcat环境配置 a) 设置CATALINA_HOME
CATALINA_HOME=F:\\apache-tomcat-6.0.30
* F:\\apache-tomcat-6.0.30为笔者本机的JDK安装目录,请开发者根据实际安装路径来填写。 b) 测试Axis2服务包
将axis2服务包(axis2.war)放入F:\\apache-tomcat-6.0.30\\webapps下
点击F:\\apache-tomcat-6.0.30\\bin下的startup.bat文件
在浏览器中输入 http://localhost:8080/axis2/
若出现图中所示页面,那么说明axis2的服务包已经发布成功了;
按照图中所示配置tomcat
c) myeclipse下的jre配置
点击Java?InstalledJREs,点击Search按钮,选择D:\\Program Files\\Java\\jdk1.6.0_10路径(开发者根据实际路径自己调整)
如图中所示进行配置,点击OK
4) Mysql数据配置 a) 数据库安装配置
实例配置时,笔者选择的是服务器。
服务器字符集选择的是utf-8
点击New?Web Project新建一个Web工程
新建工程名为myservice,一直默认执行。
右键点击工程,右键菜单里选择Properties,将工程编码设置为UTF-8
b) 编写mysql数据库访问功能模块
将mysql的连接驱动包(mysql-connector-java-5.1.7-bin.jar)拷贝至WebRoot\\WEB-INF\\lib下
在src目录下新建一个database包,分别录入以下4个类,因为牵涉到jdbc封装类的开发,这里就不详细阐述,仅贴出源代码。
(一) ConnectionFactory.java (连接工厂类)
package database; import java.sql.Connection; import java.sql.DriverManager; import java.util.ResourceBundle;
/** 类名:ConnectionFactory
* 作用:产生数据库连接对象
* 属性:
* 方法:Connection getConnection()
* 作用:返回数据库连接对象
* 参数:无
* 返回:数据库连接对象
* 其它:返回的aConnection不会自动提交JDBC事务
* 创建人:陶尚明
* */
public abstract class ConnectionFactory { /** 数据库系统的属性文件名: */
private static final String propertiesFileName = \;
/** 获取Connection对象 *
* @return Connection对象
* @throws Exception SqlException异常 */
static synchronized public Connection getConnection() throws Exception {
String dbSystem=null;
Connection aConnection;
ResourceBundle db = ResourceBundle.getBundle(\); //读取配置文件
dbSystem=db.getString(propertiesFileName);
ResourceBundle rb = ResourceBundle.getBundle(dbSystem); //读取配置文件
Class.forName(rb.getString(\)).newInstance();
aConnection =
DriverManager.getConnection(rb.getString(\),rb.getString(\database.username\),rb.getString(\)); //创建aConnection对象
aConnection.setAutoCommit(false); //设置不自动提交事务
return aConnection; //返回aConnection对象 }
/** 当前使用的数据库系统名称 *
* @param echoable 如果启用回显将在控制台输出描述当前数据库系统的信息
* @return dbSystem 数据库系统名称 */
public static String getCurrentDBMS(boolean echoable) { String dbSystem=null;
ResourceBundle rb = ResourceBundle.getBundle(\); //读取配置文件
dbSystem=rb.getString(propertiesFileName);
if (echoable)System.out.println(\are \+dbSystem); return dbSystem; } }
(二) IOperationCore.java(数据库操作接口)
/**
* 数据库常用操作封装 */
package database;
import java.sql.ResultSet; import java.sql.SQLException; import java.util.Collection;
/** 类名:IOperationCore
*
* 作用: 该接口封装了数据库操作的大部分方法
*
* 创建人:陶尚明
*/
public interface IOperationCore { /** sql更新语句 *
* @param queryString 查询语句
* @return 返回一个ResultSet
结果集
*
* @exception SQLException */
ResultSet executeQuery(String queryString) throws SQLException; /**
* sql更新语句 *
* @param updateString 数据库更新语句 * @return 更新数据库影响行数 *
* @exception SQLException */
int executeUpdate(String updateString) throws SQLException; /**
* 读取行个数 *
* @param queryString 查询语句
* @return Transact-SQL 查询后的虚拟表的行数 *
* @exception SQLException */
int getRowCount(String queryString) throws SQLException; /**
* 读取列数个数 *
* @param queryString 查询语句
* @return Transact-SQL 查询后的虚拟表的列数 *
* @exception SQLException */
int getColumnCount(String queryString) throws SQLException; /** * 读取列名 *
* @param columIndex 列索引
* @param queryString 提供ResultSet二维表的查询字符串 * @return ResultSet表中的指定的列名 *
* @exception SQLException */
String getColumnName(int columIndex, String queryString) throws SQLException; /**
* 读取queryString查询结果集ResultSet
表中的所有列名 *
* @param queryString 用于返回ResultSet
结果集的语句
* @return 表中的所有列名
* @throws SQLException */
Collection
* 读取queryString查询结果集ResultSet
表中的所有字段类型名称 *
* @param queryString 用于返回查询结果集的语句 * @return 表中的所有字段类型名称 * @throws SQLException */
Collection> getColumnTypeNames(String queryString) throws SQLException; /**
* 获取ResultSet二维表中指定位置的值,目前只支持mysql *
* @param rowIndex 行索引 * @param columnIndex 列索引
* @param queryString 产生一个ResultSet结果集的查询语句 * @return 指定位置的数据记录 *
* @exception SQLException */
Object getValueAt(int rowIndex, int columnIndex, String
queryString) throws SQLException; /** * 释放系统连接资源 *
一旦关闭,数据库的操作将全部无效 * @exception SQLException 如果关闭失败将抛出SQLException
*/ void dispose() throws SQLException; } (三) OperationCoreImpl.java(数据库操作接口实现)
package database; import java.sql.Connection; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.Collection; /** 类名:OperationCoreImplements
* * 作用: 该类实现IOperationCore接口的所有方法
*
* 创建人:陶尚明
* */
public class OperationCoreImpl implements IOperationCore { protected Connection aConnection = null; protected Statement aStatement = null; protected ResultSet aResultSet = null; protected ResultSetMetaData rsmd = null;
protected static OperationCoreImpl m_instance = null;
/** Singleton 即单例(态)模式,用来生成对象唯一实例的方法 *
* @return OperationCoreImplements的一个实例 * @throws Exception */
public static OperationCoreImpl createFactory() throws Exception { if(m_instance==null)
m_instance=new OperationCoreImpl();
return m_instance; }
/** @exception Exception */
private OperationCoreImpl() throws Exception {
init();
} /**
* 负责初始化Connection连接 * @throws Exception */
private void init() throws Exception{
aConnection=ConnectionFactory.getConnection();
} /**
* 释放系统连接资源
*
一旦关闭,数据库的操作将全部无效
*/
public void dispose() { try {
if(aResultSet!=null)
aResultSet.close();
} catch (SQLException e) {
}
e.printStackTrace();
try {
if(aStatement!=null)
aStatement.close();
} catch (SQLException e) { } try {
if(aConnection!=null)
aConnection.close();
e.printStackTrace();
} catch (SQLException e) { } }
/** sql更新语句 *
* @param queryString 查询语句
e.printStackTrace();
* @return 返回一个ResultSet
结果集 *
* @exception SQLException */
public ResultSet executeQuery(String queryString) {
try {
aStatement = aConnection.createStatement(); aResultSet = aStatement.executeQuery(queryString);
} catch (SQLException e) { }
aResultSet=null; e.printStackTrace();
return aResultSet; } /**
* sql更新语句 *
* @param updateString 数据库更新语句 * @return 更新数据库影响行数 *
* @exception SQLException */
public int executeUpdate(String updateString) {
int effectedRows=0; try{
aConnection.setAutoCommit(false);
aStatement = aConnection.createStatement(); effectedRows =
aStatement.executeUpdate(updateString); }
aConnection.commit();
}catch(SQLException ex){ }
return effectedRows;
System.out.println(\数据库写操作失败!\if(aConnection!=null) { }
try {
aConnection.rollback();
System.out.println(\事务回滚成功\
} catch (SQLException e) { }
System.out.println(\事务回滚失败\e.printStackTrace();
/**
* 读取queryString查询结果集ResultSet
表中的所有列名 *
* @param queryString 用于返回ResultSet
结果集的语句
* @return 表中的所有列名 * @throws SQLException */
public Collection
ArrayList
aResultSet=executeQuery(queryString);
ResultSetMetaData rsmd=aResultSet.getMetaData(); int j=rsmd.getColumnCount(); for(int k=0;k ColumnNames.add(rsmd.getColumnName(k+1)); } catch (SQLException e) { ColumnNames=null; e.printStackTrace(); } return ColumnNames; } /** * 读取queryString查询结果集 * @param queryString 用于返回查询结果集的语句 * @return 表中的所有字段类型名称 * @throws SQLException */ public Collection ArrayList aResultSet=executeQuery(queryString); ResultSetMetaData rsmd=aResultSet.getMetaData(); int j=rsmd.getColumnCount(); for(int k=0;k ColumnNames.add(rsmd.getColumnTypeName(k+1)); } } /** } catch (SQLException e) { } return ColumnNames; ColumnNames=null; e.printStackTrace(); * 读取列名 * * @param columIndex 列索引 * @param queryString 提供ResultSet二维表的查询字符串 * @return ResultSet表中的指定的列名 * * @exception SQLException */ public String getColumnName(int columIndex, String queryString) { String columnName=null; try { aResultSet=executeQuery(queryString); rsmd=aResultSet.getMetaData(); columnName=rsmd.getColumnName(columIndex + 1); } catch (SQLException e) { } return columnName; } /** * 读取列数个数 * * @param queryString 查询语句 * @return Transact-SQL 查询后的虚拟表的列数 * * @exception SQLException */ public int getColumnCount(String queryString) { int columnCount=0; try { aResultSet=executeQuery(queryString); ResultSetMetaData rsmd=aResultSet.getMetaData(); columnCount = rsmd.getColumnCount(); e.printStackTrace(); } catch (SQLException e) { } e.printStackTrace(); return columnCount; } /** * 读取行个数 * * @param queryString 查询语句 * @return Transact-SQL 查询后的虚拟表的行数 * * @exception SQLException */ public int getRowCount(String queryString) { int rowCount=0; try { aResultSet=executeQuery(queryString); while(aResultSet.next()) rowCount=aResultSet.getInt(1); } catch (SQLException e) { } return rowCount; } e.printStackTrace(); /** * 获取ResultSet二维表中指定位置的值,目前只支持mysql * * @param rowIndex 行索引 * @param columnIndex 列索引 * @param queryString 产生一个ResultSet结果集的查询语句 * @return 指定位置的数据记录 * * @exception SQLException */ public Object getValueAt(int rowIndex, int columnIndex, String queryString) { Object values=null; try { aResultSet=executeQuery(queryString); //指针下移一行 aResultSet.absolute(rowIndex + 1); values=aResultSet.getObject(columnIndex + 1); } catch (SQLException e) { } return values; } e.printStackTrace(); } (四) DBOperationAdapter.java (对用户透明的数据库操作类) package database; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Collection; /** 类名:DBOperationAdapter * 作用: 该类中的所有方法对用户透明,提供数据库操作的常用方法 * 说明:该类使用了Adapter 模式与 Singleton 模式, * 类自身为Adpater,OperationCoreImplements为Adapte类; * 即 public class DBOperationAdapter extends ConnectionFactory { private static IOperationCore objIOperationCore = null; private static DBOperationAdapter m_instance = null; private DBOperationAdapter() { try { objIOperationCore=OperationCoreImpl.createFactory(); } catch (Exception e) { } } public static DBOperationAdapter getInstance() { if(m_instance==null) m_instance=new DBOperationAdapter(); e.printStackTrace(); return m_instance; } /** sql更新语句 * * @param queryString 查询语句 * @return 返回一个ResultSet
表中的所有字段类型名称 *
*
* 实例化类自生对象的时候用到了Singleton模式,
DBOperationAdapter.getInstance()
* 创建人:陶尚明
*/ ResultSet
结果集 *
正在阅读:
提升系统安全检查表05-21
思念是什么?,一年级作文02-06
2015-2020年中国双向拉伸聚丙烯薄膜(BOPP)市场分析及发展前景研究报告09-04
小学生一年级作文幸福是什么06-14
社会心理学复习资料 - 图文06-10
一年级字谜11-24
妩媚,一年级作文02-06
中国教育技术协会2007年年会12-24
跑出健康 跑出快乐02-26
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- webservice
- 新手
- 教程
- 详细
- axis2
- 故障录波调试作业指导书
- 广西2018年一带一路公需科目考试试题(得分100分)
- 高中历史选修《中外历史人物评说》试卷及答案
- 生物药剂学与药物动力学习题及答案1-15章
- 高中英语语法独立主格结构讲解
- 广州大学2017年翻译硕士学位点申报简况表(陆道夫统稿修改第8次) - 图文
- 电力安全工作规程题库-信息部分
- 数据库系统及应用教程(清华大学出版社)习题答案(根据老师上课讲的内容改的)
- 仪器分析实验讲义(修改)(1) - 图文
- --01.安装远程桌面会话主机循序渐进指南
- 中国共产党和中国政府在现阶段的基本路线和重大方针政策
- Simtrade实训报告
- 青岛版科学3-6年级全部实验数量
- 医院感染核心制度
- 2018年秋《中级财务会计》第一套作业
- 15、无机化学万题库(计算题)(1-3)
- 部队管理经验材料2
- 汽车使用与维护教案 - 图文
- 土方工程施工方案6#
- 马家庄隧道出口施工情况简介 - 图文