exlipce mar 创建一个rest风格的webService项目(axis2)

来源:互联网 发布:java测试工程师笔试题 编辑:程序博客网 时间:2024/06/05 18:58

跨平台发布web Service 一般使用axis2,如果不跨平台则使用apache CXF创建web Service较好,下面我将一次介绍通过axis2创建和发布web service的详细

由于截图之前有网友反映不能查看,所以本文全用文字描述,未知之处,请留言或指出。

详细以及注意事项如下:

第一种发布方式:通过axis2.war发布Webservice(实质是通过axis2工具将webService生成**.aar文件):

一、下载(1)axis2-1.6.3-bin.zip(解压文件,作为与eclipse配置的文件)

         网址:http://axis.apache.org/axis2/java/core/download.cgi

                (2)axis2-eclipse-codegen-plugin-1.6.2.zip、axis2-eclipse-service-plugin-1.6.2.zip(解压2文件后把                    

                org.apache.axis2.eclipse.codegen.plugin_1.6.2.jar和org.apache.axis2.eclipse.service.plugin_1.6.2.jar

                放到eclipse的安装目录,E:\eclipse\dropins文件夹下)

网址:http://axis.apache.org/axis2/java/core/tools/index.html

二、将eclipse与axis2-1.6.3-bin插件集成

(1)在Eclipse的菜单栏中,Window --> Preferences --> Web Services--> Axis2 Perferences,

            在Axis2 runtime location中选择Axis2解压缩包的位置,设置好后,点"OK"即行。

三、下载axis2.war(该包放在tomcat---->webapps下),这是核心

四、开始创建项目

在eclipse中新建一个Dynamic web project项目,接口名字尽量简单和规范(接口名规范,非常有用!)

五、生成.aar文件到tomcat的webapps\axis2\WEB_INF\services下

(1)wordspace工作区下,单击右键,新建other---->选择Axis2 Wizards ---->Axis2 Service Archiver ---->next

(2)到Service Archiver时,注意class File Location 只能选择到build\classes目录(如F:\eclipse_mar\WebServiceTest\build\classes)


(3)继续next,直到Server Archiver  Generate the Service XML file 

在service name 和 Class name 后面输入对应的名字。注意:Service name是指发布成功后访问的名称

 如http://localhost:8080/axis2/services/ITestService?wsdl红色字体,而Class name则必须填入接口的全路径!

         如:com.interfaces.ITestService ,点击Load 加载成功后即可看到本窗口中的接口中的方法和参数类型!表名已经加载成功!


  (4)下一步,将看到:OUtput file location 和 Output file name ,选择导出路径,一般就导出放在 tomcat\webapps\axis2\WEB-INF\services下

这样方便马上测试,而name可以任意取(只要符合命名规范即可)

点击finish,则生成.aar文件成功!

(5)start--tomcat--访问刚刚发布的webService,在地址栏输入http://localhost:8080/axis2/services/ITestService?wsdl,即可看见生成的wsdl文件


注意:以上的方式是发布到axis2.war包中,当然我们也可以把生成.aar文件copy到实际应用中;

         同时,也可以使用eclipsecreate webservice功能发布我们的webservice,选择axis2生成我们的webservice

         这样webservice就会部署到我们的应用中了。

以上开发环境:

windows 7 64位 +tomcat 7 64位+jdk1.6 32位 +eclipse mar(最新版本)+axis2.war最新版+axis2.1.6.3.bin最新版+axis2两个插件

可能不同版本使用会有差异。

第二种发布方式:是通过生成wsdl文件后,将该项目生成war包,放在tomcat,webapps下

一、新建一个Dynamic web Project工程

注意:需要选择版本是Dynamic web  module  version 为2.5,否则在生成wsdl文件时会报错误!

二、在该工程src目录下新建com.test.interfaces和com.test.implement包

interfaces中存放接口类-----》ITestService.java :方法testService,参数String 和int ,返回值类型String

implement中存放实现类---->ITestServiceImpl.java 

三、完成二以后

点中ITestServiceImpl.java ,单击右键-----》选择web Services----->选择create web Service,然后选择对应的实现类

       注意:(1)web service type  选择是 Bottom up java Bean Web Service

                    (2)service implementation 一定是当前项目下的当前实现类全路径!如果有其它项目打开,那么需要仔细核对是否为当前项目的实现类

     点击next,进入下一步

四、选择wsdl文件

点击下拉箭头,选择当前(单击右键的类名)想要生成的wsdl文件

五、点击finish即可

六、发布webService

在发布之前,需要先检查该文件是否能正确使用!

步骤:1、找到刚刚生成的wsdl文件,相对项目目录为/WebContent/wsdl/ITestAxis2Impl.wsdl

    2、点击右键--》点击web services---->选择Test with web service Explorer

   3、选择实现类ITestAxis2Impl,在对应的String 和 int 类型(由于我的接口中是两个参数String 和int类型)中输入值,点击Go

   4、执行3步骤后,在页面的status状态栏中将会出现调用接口方法后的执行结果,如果有返回应该有的结果,那么web Service创建成功!

        开始发布web Service,点击项目名,然后右键export---->输入web---》选择WAR file

------>下一步,选择需要打包的项目名和war包的生成路径(一般直接选择tomcat/webapps目录,也可以选择其他目录)

七、执行以上步骤后,发布就已成功。


八、测试刚刚发布的webService

新建一个java Project(注意:此处不是Dynamic web Project),新建lib文件夹用于存放6个架包

        axis.jar、commons-discovery-0.2.jar、commons-logging.jar、jaxrpc.jar、saaj.jar、wsdl4j.jar(这6个架包可以从刚刚生成的web Service中复制,相对目录:/WebContent/WEB-INF/lib)

在src下新建TestAxis2.java文件,代码如下:

package com.test;
import javax.xml.rpc.ParameterMode;

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
import org.junit.Test;

public class TestAxis2 {
public  String invokeTest(){
//远程调用路径
String endpoint="http://localhost:8080/Axis2WebserviceTest3/services/ITestAxis2Impl"; //测试通过打成war包,放在tomcat ---webapps下发布
//                      
    Axis2WebserviceTest3是项目名称)                   (ITestAxis2Impl实现类名而非接口名称)
String result="call failed!";
Service service=new Service();
Call call;
try{
call=(Call)service.createCall();
call.setTargetEndpointAddress(endpoint);
//调用方法名,实际上是实现类中的方法名
call.setOperationName("iTestAxis2");
//设置参数名
call.addParameter("str",    //接口中的参数名
XMLType.XSD_STRING, //该参数类型
ParameterMode.IN    //参数模式,out in
);
call.addParameter("m",
XMLType.XSD_INT,
ParameterMode.IN
);
//设置返回值类型
call.setReturnType(XMLType.XSD_STRING);
String str="dsadjk";
int m=7;
result=(String) call.invoke(new Object[]{str,m});
}catch(Exception e){
e.printStackTrace();
}
return result;
}
@Test
public void testAxis2(){
String ss=invokeTest();
System.out.println(ss);
}
}

测试成功后,eclipse控制台会打印接口返回值。





1 0
原创粉丝点击