- 准备工作。先去官网下载axis2-1.6.2-bin.zip,axis2-1.6.2-war.zip这两个包,解压axis2-1.6.2-bin.zip包到一个目录(我的是C盘),设置环境变量AXIS2_HOME=C:\axis2-1.6.2,这个步骤和设置JDK一样,就不说了。解压axis2-1.6.2-war.zip得到war包axis2.war,放在tomcat的里运行,访问地址是http://localhost:8080/axis2/,成功页面如下:
项目axis2的目录结构如下: -
axis2-web META-INF WEB-INF classes conf axis2.xml lib activation.jar ... xmlSchema.jar modules modules.list addressing.mar ... soapmonitor.mar services services.list aservice.aar ... version.aar web.xml
- 有多种发布方法。第一种方法:直接发布类文件(.class)。缺点是此类文件中不能有包路径,否则发布出错,下面来发布以下这个类,
。在项目axis2的WEB-INF下新建文件夹pojo,把HelloWorldService.class放在pojo里就OK了。插话{ 为什么要用pojo文件夹呢?查看项目WEB-INF\conf下的axis2.xml文件中有这么一句import java.util.Random; /** * * @author yanqh * @since 2013-7-29 * */ public class HelloWorldService { public String sayHello(String name) { return name + " say: hello [axis2]"; } public int getAge(int i) { return i + new Random().nextInt(100); } }
<deployer extension=".class" directory="pojo" class="org.apache.axis2.deployment.POJODeployer"/>
}。点击项目主页的Services链接来查看发布的Service,如下: - 使用地址http://localhost:8080/axis2/services/HelloWorldService/sayHello?name=yanqh来访问HelloWorldService中的sayHello方法,
插话{网上看到可以直接发布jar包,这样就可以在类文件中有包路径,我没试过就不在这里写了} - 第二种方法:打aar包进行发布。下面来发布以下这个类,
新建services.xml,package samples.quickstart.service.pojo; import java.util.HashMap; public class StockQuoteService { private HashMap map = new HashMap(); public double getPrice(String symbol) { Double price = (Double) map.get(symbol); if(price != null){ return price.doubleValue(); } return 42.00; } public void update(String symbol, double price) { map.put(symbol, new Double(price)); } }
<?xml version="1.0" encoding="UTF-8"?> <service name="StockQuoteService" scope="application"> <description> Stock Quote Sample Service </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"> samples.quickstart.service.pojo.StockQuoteService </parameter> </service>
然后构建以下目录结构,- StockQuoteService //这个文件夹名字是任意的 - META-INF - services.xml - lib - samples - quickstart - service - pojo - StockQuoteService.class - StockQuoteService.wsdl //在第6步生成的
- 打开命令行,执行以下命令
之后StockQuoteService目录下生成了StockQuoteService.wsdl文件,再执行以下命令
之后StockQuoteService目录下生成了StockQuoteService.aar包,把aar包放到项目axis2\WEB-INF\services中,然后再看Services列表