使用Axis2建立WebService
Axis是apache重量级的WebService框架,虽然相比Xfire和CXF而言相对比较臃肿,但是企业中最常用的就是Axis,Axis2是Axis的升级版;
建立一个最简单的Axis2 WebService步骤如下:
前期准备;
下载Axis2的压缩包,解压,并配置到eclipse中
1.首先新建一个Dynamic web工程,修改配置属性
2.导入axis2的相关jar包到工程中。
3.新建工程后,像建立普通java程序一样新建一个java类,这里的java类实现了简单加法功能。
package com.zime.service; public class Calculate { public int calculate(int num1, int num2){ System.out.println("num1: "+num1+"num2:"+num2); return num1+num2; } }
4.选中编写好的java类,右击created WebService,
直接点下一步,启动tomcat成功的话就说明可以了,否则应检查错误原因。
这样,就建立好了一个简单的Axis2 WebService了。
至于如何调用WebService,以android手机调用为例:
首先还是导入相关的Axis2 jar包到android工程中,在manifest文件中添加andro手机的网络访问授权,主活动类的代码如下
package com.zime.client; import org.ksoap2.SoapEnvelope; import org.ksoap2.serialization.SoapObject; import org.ksoap2.serialization.SoapSerializationEnvelope; import org.ksoap2.transport.HttpTransportSE; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ((Button)findViewById(R.id.button1)).setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { //步骤1:设置webservice的调用参数 String wsdlUrl = "http://10.173.20.246:8080/CalculateWS/services/Calculate"; String webMethod = "calculate"; String namespace = "http://service.zime.com"; String soapAction = namespace + webMethod; //步骤2:创建一个对象soapsubject SoapObject soapObject = new SoapObject(namespace, webMethod); //步骤3:传递参数 soapObject.addProperty("num1", 1); soapObject.addProperty("num2", 2); //步骤4:创建一个SoapSerializationEnvelope SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); //步骤5:设置一个传回对象 envelope.bodyOut = soapObject; //步骤6:创建HttpTransportSE,用于传输数据 HttpTransportSE se = new HttpTransportSE(wsdlUrl); try { //步骤7:发送请求 se.call(soapAction, envelope); //步骤8:获取从互联网返回的结果 if(envelope.getResponse() != null){ Object result = envelope.getResponse(); //测试:显示结果 Toast.makeText(MainActivity.this, result.toString(), 1).show(); } } catch (Exception e) { } } }); } }
如此,便实现了简单的Axis2 WebService创建和调用了。