axis2之webservice新手超详细教程
更新时间:2024-04-13 02:14: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
结果集 *
正在阅读:
2019-2020学年一年级上学期小学数学综合复习混合五单元真题模拟试卷(16套试卷)-创新套卷word版,可10-22
系统管理员面试考试试题(答案)10-27
第七章 资源税法08-12
人民教育出版社吴式颖版外国教育史12-14
关于农村科技推广体系的现状及几点建议10-22
铁路能力试题10-22
2014年组织行为学案例分析Word版04-22
2017二建机电模拟一、二及答案04-02
关于教师节的英文诗歌03-21
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- webservice
- 新手
- 教程
- 详细
- axis2
- 合理低价中标招标文件范本
- 中国淋浴房行业市场分析与发展趋势研究报告-灵核网 - 图文
- 应用题专题知识练习集合(含答案)
- 初中化学实验题专题训练
- 问题解决在小学数学教学中的研究课题阶段小结
- 2014年中考物理实验操作考试题及评分细则--试题版1
- 2018届高三全国卷第一次模拟考试理综试题及答案
- 放射科三基考试试卷及答案
- “三违”行为管理制度
- 三年级安全常识课第八课:认识火灾 - 图文
- 中国共产党和中国政府在现阶段的基本路线和重大方针政策
- 学案练习 数学人教版选修2-1 第三章 空间向量
- 全球电池隔膜材料市场调研报告
- 奥数:初中奥数系列: 锐角三角函数A级 第02讲 学生版
- 安全标准化讲义
- 吉图珲电力看守方案
- 2015中考数学试题分类 多边形与平行四边形(含解析)
- (参考)施工组织设计
- 班级管理与班集体建设
- 趣味语文题