1、引言
最近由于要提交课程作业的缘故所以学习了Web Service相关技术,学习了Axis2技术,该技术虽然较老,但是可能还有人用,所以在这边对其用法做一个简单介绍。由于Axis2配置以及使用方法较多,本文不赘述所有方法,只介绍IDEA中对其的简单食用过程,或许会对入门的小伙伴有一定作用。
2、下载文件
IDEA(需配置好Java所需jdk以及jre,在此不做赘述)下载链接(建议使用正版,学生认证后可免费)
Axis2:下载链接
目前最新版本是1.7.9,建议下载以下框出来的几个文件备用。
Tomcat:下载链接
3、Axis2配置
3.1 IDEA中的Axis2插件
在setting里找到plugin,然后在图中位置找到对应按钮进行安装我们下载好的axis2-idea-plugin-1.7.9.zip这个插件包。
3.2 安装axis插件到Tomcat
我们把下载下来的 axis2-1.7.9-war.zip文件直接放到tomcat安装目录下的webapps下即可。
我们下载的axis2-1.7.9-bin.zip文件解压备用,当我们写程序找不到相应的引用包时,可以在此文件夹的lib文件夹中找到。
4 创建Web项目
4.1 打开IDEA2020,创建Java项目
创建成功的Java项目如图所示:
4.2 创建服务端程序
在项目上右击,选择图中选项
按下图所示操作:
正确操作后,项目目录应该如图所示。
4.3 修改服务端程序
服务端程序如下,我在这里读取了数据库,大家可以自己做一下或者换成别的。
数据库谓mysql数据库,表结构如下:
数据表 为Student (SNO, SName, SGender, SBrithday),填入三十条数据
使用数据库时记得导入驱动!!!!!
package example;
import bean.student;
import javax.jws.WebMethod;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class HelloWorld {
student stuInfor = new student();
// 返回一维字符串数组
@WebMethod
public String[] getMDArray ()
{
Connection con;
//jdbc驱动
String driver = "com.mysql.cj.jdbc.Driver";
//这里我的数据库是fwjs
String url = "jdbc:mysql://localhost:3306/fwjs";
String user = "fwjs";
String password = "fuwujisuan";
//List<student> strArray = new ArrayList();
String [] strArry = new String[30];
strArry[0]= String.valueOf(0);
try {
//注册JDBC驱动程序
Class.forName(driver);
//建立连接
con = DriverManager.getConnection(url, user, password);
if (!con.isClosed()) {
System.out.println("数据库连接成功");
strArry[1]= String.valueOf(1);
}
Statement stmt = con.createStatement();
String sql;
sql = "select * from student";
ResultSet stu = stmt.executeQuery(sql);
int i = 0;
while (stu.next()) {
// student stuInfor = new student();
stuInfor.setSno(stu.getString("SNO"));
stuInfor.setSbrithday(stu.getString("SBirthday"));
stuInfor.setSname(stu.getString("SName"));
stuInfor.setSgender( stu.getString("SGender"));
strArry[i]= String.valueOf("学号:") + stu.getString("SNO") + String.valueOf(" 姓名:") + stu.getString("SName") + String.valueOf(" 性别:") + stu.getString("SGender") + String.valueOf(" 生日:") + stu.getString("SBirthday");
i++;
}
} catch (ClassNotFoundException e) {
System.out.println("数据库驱动没有安装");
strArry[1]= String.valueOf(2);
} catch (SQLException e) {
e.printStackTrace();
System.out.println("数据库连接失败");
strArry[1]= String.valueOf(3);
}
return strArry;
}
}
另外,由于我此处建立了student对象,大家可以建立bean包,然后建立student类
以下为bean.student的代码
package bean;
public class student {
private String sno;
private String sname;
private String sgender;
private String sbrithday;
public String getSno() {
return sno;
}
public void setSno(String sno) {
this.sno = sno == null ? null : sno.trim();
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname == null ? null : sname.trim();
}
public String getSgender() {
return sgender;
}
public void setSgender(String sgender) {
this.sgender = sgender == null ? null : sgender.trim();
}
public String getSbrithday() {
return sbrithday;
}
public void setSbrithday(String sbrithday) {
this.sbrithday = sbrithday == null ? null : sbrithday.trim();
}
@Override
public String toString() {
return "StudentInfo{" +
"snumber='" + sno + '\'' +
", sname='" + sname + '\'' +
", sgender='" + sgender + '\'' +
", sbrithday='" + sbrithday + '\'' +
'}';
}
}
现在目录结构如图
4.4 生成wsdl文件
按下图操作
这时会自动生成wsdl文件。
5 配置服务端
按下图所示操作:
上图中框中要改为/
通过file打开project structure,选择Artifacts,发现右下角有个FIX,点击,选择Add····
6运行服务端
点击运行,在浏览器输入网址localhost:8080/services,看到HelloWorld(wsdl)表示我们已经成功发布。
7 创建客户端
创建client包,然后下边创建ComplexTypeRPCClient类,该类代码如下
package client;
import bean.student;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;
import javax.xml.namespace.QName;
import java.util.Scanner;
public class ComplexTypeRPCClient
{
public static void main(String[] args) throws Exception
{
RPCServiceClient serviceClient = new RPCServiceClient();
Options options = serviceClient.getOptions();
EndpointReference targetEPR = new EndpointReference("http://localhost:8080/services/HelloWorld");
options.setTo(targetEPR);
QName opAddEntry = new QName("http://ws.apache.org/axis2", "getMDArray");
String[] strArray = (String[]) serviceClient.invokeBlocking(opAddEntry,
new Object[]{}, new Class[]{String[].class })[0];
for (String s : strArray)
System.out.println(s + " ");
System.out.println();
}
}
在创建该类时,可能会报缺少axis2包的错误,我们这时就可以导入bin包下的lib文件夹中的jar包来解决问题
8 运行客户端
在保证服务端以及tomcat正常运行的前提下,运行客户端。可以得到结果。
66666666