Axis2创建web service(一) - eclipse安装Axis2插件

参考:转自:https://blog.csdn.net/wangchangpen62/article/details/45171001

Axis2与CXF是现在很主流的WebService开发框架(java6也已经支持了),项目上还都是基本上用前两种做开发,今天记录一下我安装Axis2插件在eclipse中的安装和写一个简单的测试代码。

一、环境

1、eclipse:64位     Eclipse Java EE IDE for Web Developers. Version: 1.3.1.20100916-1202 Build id: 20100917-0705

2、jdk:1.6  64位


3、Axis2的版本是1.6.2

4、eclipse的Axis2插件

Service Archive Wizard - Eclipse Plug-in(用来将服务代码打包成后缀名为.aar文件的插件): axis2-eclipse-service-plugin-1.6.2.zip

Code Generator Wizard - Eclipse Plug-in(用来将服务代码生成wsdl文件以及解析将wsdl文件生成客户端代码的插件):axis2-eclipse-codegen-plugin-1.6.2.zip

二、

先关闭eclipse,解压axis2-eclipse-codegen-plugin-1.6.2.zip和axis2-eclipse-service-plugin-1.6.2.zip,把得到的两个jar包放入eclipse目录下的\plugins\中,重启eclipse。放置后,打开Eclipse,打开File—New—Other,若能看到如图,说明插件配置成功


若是高版本的eclipse或myeclipse的方法(没有测试过):进入eclipse的文件中将上面下载的eclipse插件解压到dropins文件目录下(解压的时候会生成plugins文件夹,我是把里面生成的jar直接拷出来放在dropins文件夹里面),以我的为例:F:\MyEclipse-8.6\dropins。然后重启eclipse,点击File-New-Other有如下图显示,则表示安装插件成功!若不行,试试在dropins目录下添加axis2.link文件,内容是 

path=myeclipse的安装目录\\dropins(例如:我的文件内容为:path=E:\\MyEclipse-8.6\\dropins);

插件到此安装完成!

三、生成aar文件:

写一个简单的服务器代码:注意里面的方法参数不能传jsonObject,不然用插件打包时看不到下一步下一步的内容或者没反应。

package com.tongwei.remoteproxy;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

import com.tongwei.remoteproxy.db.ConnectionManager;
import com.tongwei.remoteproxy.util.Log;

/**
 * 
 * 打aar包时需要注意:java内的方法参数最好用String 或String[],不能用jsonObect,不然打包向导无法正常打包
 *
 */
public class SyncDataService {
	public static String requestService(String param) {
		
		StringBuffer logStr = new StringBuffer();// 写入字符
		String curDate = Log.GetNowDate("yyyy-MM-dd HH:mm:ss");// 当前时间yyyy-MM-dd
		JSONArray jsonArray = JSONArray.fromObject(param);
		
		String result_str = "";
		int cnt_suss = 0;
		int cnt_fail = 0;
		try {
			Log.CreateLog(curDate + " 输入参数-----------------" + param + "\r\n");
			
			logStr.append("解析推送设备信息共【").append(jsonArray.size()).append("】条:\r\n");
			result_str = "解析推送设备信息共【" + jsonArray.size() + "】条";
			for (int i = 0; i < jsonArray.size(); i++) {// 可能多个
				JSONObject object = jsonArray.getJSONObject(i);			
				String type = object.getString("operatortype");		
				String ws_id = object.getString("serialno");
				//System.out.println(type);
				
				String tempstr = "";
				String temp_result = saveCardRecord(object.toString());//保存数据,参数只能是string类型,不然打不了aar包
				
			}
			
		} catch (Exception e) {
			e.printStackTrace();
			return "1-" + e.getMessage();
		}
		
		//System.out.println("测试=" + logStr);
		return "0-" + result_str;
	}
	
	public static void main(String[] args){
		String str = 

			"[{\"cardno\": \"ic卡号111\",\"username\": \"张三\",\"employeeno\": \"C01\",\"serialno\": \"1001\",\"operatorname\": \"控制器名称1\",\"doorname\": \"门禁点名称1\",\"opentime\": \"2018-01-11 04:52:48\",\"operatortype\":\"doorInout\",\"eventtype\":\"1\"}," + 
			" {\"cardno\": \"ic卡号111\",\"username\": \"张三\",\"employeeno\": \"C01\",\"serialno\": \"1111\",\"costmoney\": \"6\",\"equipmentname\": \"设备名称1\",\"merchant\": \"商户1\",\"consumetime\": \"2018-01-11 12:52:48\",\"balance\":\"57\",\"operatortype\":\"consumeRecord\"}]";


		String result = requestService(str);
		System.out.println( result);
	}
	
	/**
	 * 连数据库,保存数据
	 * 
	 * @param param
	 * @return
	 * @throws SQLException
	 */
	public static String saveCardRecord(String param ) throws SQLException {//JSONObject object
		Connection conn = null;
		try {
			conn = ConnectionManager.getConnection();// 打开数据库连接
		} catch (Exception e) {
			e.printStackTrace();
			return "1-" + e.getMessage();
		} finally {
			if (conn != null) {
				conn.close();
			}
		}

		return "0";
	}
	
}

然后File-New-Other--Axis2 Wizards-Axis2 Service Archiver(通过插件生产可发布的aar文件)


选择class文件的目录,下一步






点击【完成】

到此步骤就能生成好名为:SyncDataService.aar的文件了,在桌面上用压缩软件打开这个aar文件可以看到,结构与平常的war的结构很是相似。


再将service.xml解压出来,可以看到如下代码:

<service name="SyncDataService" >
	<description>
		Please Type your service description here
	</description>
	<messageReceivers>
		<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
		<messageReceiver  mep="http://www.w3.org/2004/08/wsdl/in-out"  class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
	</messageReceivers>
	<parameter name="ServiceClass">com.tongwei.remoteproxy.SyncDataService</parameter>
</service>

如果有多个webservice要发布,且是同一个项目之内的话,可以通过修改此配置文件与上面的class文件夹来达到发布一个aar包多个webservice服务,有如下配置(来自参考):

<serviceGroup>  
    <service name="ManifestService" >  
        <description>  
            ManifestService  
        </description>  
        <messageReceivers>  
            <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />  
            <messageReceiver  mep="http://www.w3.org/2004/08/wsdl/in-out"  class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>  
        </messageReceivers>  
        <parameter name="ServiceClass">com.hwt.glmf.webservice.ManifestService</parameter>  
    </service>  
    <service name="ManifestServiceQG" >  
        <description>  
            QYTG ManifestService  
        </description>  
        <messageReceivers>  
            <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />  
            <messageReceiver  mep="http://www.w3.org/2004/08/wsdl/in-out"  class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>  
        </messageReceivers>  
        <parameter name="ServiceClass">com.hwt.glmf.qytgservices.ManifestServiceQG</parameter>  
    </service>  
    <service name="CipService" >  
        <description>  
            CipService  
        </description>  
        <messageReceivers>  
            <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />  
            <messageReceiver  mep="http://www.w3.org/2004/08/wsdl/in-out"  class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>  
        </messageReceivers>  
        <parameter name="ServiceClass">com.hwt.glmf.externalinterface.cip.CipService</parameter>  
    </service>  
</serviceGroup>  

配置web.xml中Axis2的AxisServlet

<servlet>  
    <servlet-name>AxisServlet</servlet-name>  
    <servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class>  
    <load-on-startup>1</load-on-startup>  
</servlet>  
<servlet-mapping>  
    <servlet-name>AxisServlet</servlet-name>  
    <url-pattern>/services/*</url-pattern>  
</servlet-mapping>  
我们这边就是发布上面写的一个简单的webservice接口,现在要说的是发布这个webservice接口 (有放在下载的Axis2的war包中一起发布的版本,此篇文章不做介绍,就是介绍在web项目中发布webservice接口),可以将此文件放在新建的web项目的WebRoot-->WEB-INF-->services目录下,在将再下载的Axis2 Binary Distribution(1.6.2)解压,生成的文件夹下面的lib目录中将所有的jar包拷入到lib中。启动项目的时候就会将次webservice发布出去。 在浏览器中输入如下地址(下面的是本机地址,如果是访问别的机子,将localhost:8080修改成对应的IP以及端口号即可):
http://localhost:8080/QYTG/services/MyService?wsdl  

有如下显示的则是成功了:


到了此步骤就是Axis2的webservice接口发布成功了!因为Axis2有很多种生成客户端代码的方法,所以再开一篇介绍Axis2的客户端代码的生成


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值