加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

axis生成webservice方法(转载)

发布时间:2020-12-17 00:30:56 所属栏目:安全 来源:网络整理
导读:一、前期准备 1、软件 准备resinAxis14,其中webapps下要有axis文件夹 ? axis内容:用于生成WSDL文件和通过WSDL生成JAVA也可以放在其他地方 ? ? WSDL命令: ? 将axis文件夹,复制到G:ServerresinAxis14deploy中,启动resin: 点击list可以查看所有接口 ?

一、前期准备

1、软件

准备resinAxis14,其中webapps下要有axis文件夹

?

axis内容:用于生成WSDL文件和通过WSDL生成JAVA也可以放在其他地方

?

?

WSDL命令:

?

将axis文件夹,复制到G:ServerresinAxis14deploy中,启动resin:

点击list可以查看所有接口

?

为了使AXIS指向本地工程,修改resin.conf:

????? <resin:if test="${java.isJava5()}">

??????? <!--

?????????? - Administration application /resin-admin

?????????? -

?????????? - password is the md5 hash of the password.

?????????? - localhost is true to limit access to the localhost

????????? -->

??????? <resin:set var="resin_admin_password"? default=""/>

??????? <resin:set var="resin_admin_localhost" default="true"/>

?

??????? <web-app id="/resin-admin" document-directory="${resin.home}/php/admin"/>

?????? ?<web-app id="/axis14" document-directory="G:/workspace/TestAxis14/WebRoot/"/>

?????? </resin:if>

将axis文件夹中内容,复制到web-inf对应目录中(类似于:index.jsp,fingerprint.jsp可以不复制。这些用来显示如上图的AXIS页面)

?

二、写接口类(用于生产WSDL)

写一个接口类,没有package(只需要写出方法,不用写方法的具体实现,不能再其中写main方法)

?

?

将CLASS文件放到axis14文件夹中,此文件夹放置了java2wsdl和wsdl2java命令

?

三、生成WSDL文件和客户端与服务端的JAVA文件

修改java2wsdl:

set Axis_Lib=G:ServerresinAxis14webappsaxisWEB-INFlib

set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%

%Java_Cmd% org.apache.axis.wsdl.Java2WSDL -o TestAxis14.wsdl? -l "http://localhost:9090/axis/services/TestAxis14" TestAxis14

?

在cmd中,执行java2wsdl,结果如下:(需要保证AXIS服务可用)

?

axis14文件夹中生成文件:TestAxis14.wsdl

修改wsdl2java:

set Axis_Lib=G:ServerresinAxis14webappsaxisWEB-INFlib

set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%

set Output_Path=G:axis14axis14src

set Package=com.zhongying.testaxis14.client

%Java_Cmd% org.apache.axis.wsdl.WSDL2Java -o %Output_Path% -p %Package% TestAxis14.wsdl

执行wsdl2java生成客户端程序

修改输出路径:set Package=com.zhongying.testaxis14.service

修改最后一句:%Java_Cmd% org.apache.axis.wsdl.WSDL2Java -s -o %Output_Path% -p %Package% TestAxis14.wsdl

-s代表生成服务端程序

执行wsdl2java生成服务端程序

将得到的JAVA文件放到工程中

?

四、修改配置文件

修改G:workspaceTestAxis14WebRootWEB-INFserver-config.wsdd

增加:

?<service name="TestAxis14" provider="java:RPC">

? <parameter name="allowedMethods" value="*"/>

? <parameter name="className" value="com.zhongying.testaxis14.service.TestAxis14SoapBindingImpl"/>

?</service>

访问:http://localhost:9090/axis14/services/TestAxis14?wsdl 可以显示WSDL内容:

?

?

五、测试服务

1、写具体实现业务的类:

package com.zhongying.testaxis14.service;

public class TestAxisModel {

public String getAxisNameAndId(String name,String id){

?

System.out.println("getAxisNameAndId name is "+name+" id is "+id);

return "getAxisNameAndId IS END :"+name+"-"+id;

}

public String getAxisId(String id){

System.out.println("getAxisId? id is "+id);

return "getAxisId IS END :"+id+" is getAxisId ok";

}

public static void main(String[] args){

System.out.println("getAxisNameAndId? id is ");

}

}

?

修改服务端的实现类:

package com.zhongying.testaxis14.service;

?

public class TestAxis14SoapBindingImpl implements com.zhongying.testaxis14.service.TestAxis14_PortType{

??? public java.lang.String getAxisNameAndId(java.lang.String name,java.lang.String id) throws java.rmi.RemoteException {

??? ????????TestAxisModel m = new TestAxisModel();

??? ????????return m.getAxisNameAndId(name,id);

??? }

?

??? public java.lang.String getAxisId(java.lang.String id) throws java.rmi.RemoteException {

??? ????????TestAxisModel m = new TestAxisModel();

??? ????????return m.getAxisId( id);

??? }

}

?

新增客户端的测试类:

package com.zhongying.testaxis14.client;

public class TestTestAxis {

public static void main(String args[]){

TestAxis14SoapBindingStub stub;

try {

javax.xml.rpc.Service service=new TestAxis14ServiceLocator();

?

java.net.URL url=new java.net.URL("http://localhost:9090/axis14/services/TestAxis14?wsdl");

stub = new TestAxis14SoapBindingStub(url,service);

?

??? ????????????????String returnMsg1=stub.getAxisId("gx");

System.out.println("returnMsg1 "+returnMsg1);

??? ????????????????returnMsg1=stub.getAxisNameAndId("gx"," id ");

System.out.println("returnMsg1 "+returnMsg1);

} catch (Exception e) {

e.printStackTrace();

}

}

}

在ECLIPSE中执行此类,可以测试WEBSERVICE

执行结果:

returnMsg1 getAxisId IS END :gx is getAxisId ok

returnMsg1 getAxisNameAndId IS END :gx- id

?

服务端的resin日志:

getAxisId? id is gx

getAxisNameAndId name is gx id is? id

?

转自:http://user.qzone.qq.com/38873502#!app=2&via=QZ.HashRefresh&pos=1320584525

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读