您的位置:首页 > 其它

axis1发布方式

2015-08-27 20:15 441 查看
axis中发布服务主要有两种方式

即时发布JWS
定制发布WSDD

即时发布JWS,你可以从上两篇文章中看到了。由于限制过大(带包的类),一般不常用。但即时发布比较简单,对于初学者还是有必要的,学习本来就是个循序渐进的过程。

主要简单讲下第二种发布方式:定制发布WSDD

eclipse项目截图



第一步、编写接口Hello.java,HelloImpl实现类

Hello.java

[java] view
plaincopy

package com.bing.inter;

public interface Hello {

public String sayHello(String name);

}

HelloImpl.java

[java] view
plaincopy

package com.bing.inter.impl;





import com.bing.inter.Hello;



public class HelloImpl implements Hello {



@Override

public String sayHello(String name) {

return "你好,"+name;

}

}

第二步、在src目录下helloImpl.wsdd,内容如下

[html] view
plaincopy

<deployment xmlns="http://xml.apache.org/axis/wsdd/"

xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">

<service name="helloWS" provider="java:RPC">

<parameter name="wsdlTargetNamespace" value="http://HelloImpl.impl.inter.bing.com/"/>

<parameter name="className" value="com.bing.inter.impl.HelloImpl"/>

<parameter name="allowedMethods" value="sayHello"/>

<operation name="sayHello" qname="operNS:sayHello"

xmlns:operNS="http://HelloImpl.impl.inter.bing.com/"

returnQName="retNS:AddResult"

xmlns:retNS="http://HelloImpl.impl.inter.bing.com/"

returnType="rtns:String"

xmlns:rtns="http://www.w3.org/2001/XMLSchema" >

<parameter qname="pns:A" xmlns:pns="http://HelloImpl.impl.inter.bing.com/"

type="tns:String" xmlns:tns="http://www.w3.org/2001/XMLSchema"/>

</operation>

</service>

</deployment>

说明:

第3行,HelloWS是发布的名字,可以自定义。

第4行,设置自定义命名空间,我这里是按照包路径反着定义的。 (其实axis2就是这么定义命名空间的)

第5行,value的值为HelloImpl的类路径

第6行,指定这个服务允许别人访问的方法名,这里只让访问sayHello,如果改成*号,则这个类所有 public的方法都能被客户端调用。

第7行-第15行,设置sayHello的输入参数,返回类型。因为返回类型是String,

注意的重点地方,第11,第14行String类型。其中的命名空间和上面保持一致,其他的参数设置,

qname="operNS:sayHello" returnQName="retNS:AddResult" qname="pns:A 我是自定义的。参考axis1自带的例子,

(axis1自带的例子,是个很好的资料,建议学习下。)

第三步、设置axis1环境变量。

设置AXIS_HOME=C:\axis-1_4

AXIS_LIB=%AXIS_HOME%\bin

或者编写.bat文件.在C:\tomcat\tomcat6\webapps\axis 目录下新建hello.bat

内容如下:

[plain] view
plaincopy

set Axis_Lib=C:\axis-1_4\lib

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

set Axis_Servlet=http://localhost:9080/axis/servlet/AxisServlet

%Java_Cmd% org.apache.axis.client.AdminClient -l%Axis_Servlet% helloImpl.wsdd

pause

说明:

第3行:是你本地的tomcat的axis地址URL

第4行,-l 代表: sets the AxisServlet URL

-l<url> sets the AxisServlet URL

-h<hostName sets the AxisServlet host

-p<portNumber> sets the AxisServlet port

-s<servletPath> sets the path to the AxisServlet

-f<fileName> specifies that a simple file protocol should be used

-u<username> sets the username

-w<password> sets the password

-d sets the debug flag (for instance, -ddd would set it to

-t<name> sets the transport chain touse

把helloImpl.wsdd复制到C:\tomcat\tomcat6\webapps\axis 目录中

把Hello.class,HelloImpl.class。即上图中bulid目录下classes/com目录复制到C:\tomcat\tomcat6\webapps\axis\WEB-INF\classes(可删除其他没有调用的类。只保留Hello.class,HelloImp.class)

然后cd到 C:\tomcat\tomcat6\webapps\axis,目录,执行hello.bat



发布成功!在C:\tomcat\tomcat6\webapps\axis\WEB-INF目录下,多了一个server-config.wsdd。

访问:http://localhost:9080/axis/services/helloWS?wsdl

第四步、客户端测试代码



[java] view
plaincopy

package com.bing.test;



import org.apache.axis.client.Call;

import org.apache.axis.client.Service;



public class TestHello2 {

public static void main(String[] args){

Service service=new Service();

String url="http://localhost:9080/axis/services/helloWS?wsdl";

try {

Call call=(Call)service.createCall();

call.setTargetEndpointAddress(url);

call.setOperation("sayHello");

System.out.println(call.invoke(new Object[]{"大兵哥"}));

} catch (Exception e) {

e.printStackTrace();

}

}

}

打印结果:你好,大兵哥

若出现警告:

警告: Unable to find required classes (javax.activation.DataHandler and javax.mail.internet.MimeMultipart). Attachment support is disabled.

缺少mail-1.4.jar包(可从tomcat中lib目录中复制)。把它放在eclipse项目axis1的lib目录下即可。

若要不发布,可编写undeploy.wsdd,unhello.bat内容分别如下

[html] view
plaincopy

<undeployment name="test" xmlns="http://xml.apache.org/axis/wsdd/">

<service name="urn:helloWS"/>

</undeployment>

[plain] view
plaincopy

set Axis_Lib=C:\axis-1_4\lib

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

set Axis_Servlet=http://localhost:9080/axis/servlet/AxisServlet

%Java_Cmd% org.apache.axis.client.AdminClient -l%Axis_Servlet% undeploy.wsdd

pause
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: