axis1发布方式

axis中发布服务主要有两种方式

  • 即时发布JWS
  • 定制发布WSDD

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

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

eclipse项目截图


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

Hello.java

package com.bing.inter;
public interface Hello {
	public String sayHello(String name);
}

HelloImpl.java
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,内容如下

<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

内容如下:

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

第四步、客户端测试代码

             

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内容分别如下

<undeployment name="test" xmlns="http://xml.apache.org/axis/wsdd/">
  <service name="urn:helloWS"/>
</undeployment>
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


参考:http://yydcj.iteye.com/blog/714521

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1.TOMCAT+AXIS的安装配置 首先机子上应该安装JDK1.5版本以上(带有XML解析包)。我这里是1.5.0.6 从APACHE的官方网站(www.apache.org)下载TOMCAT安装软件。下载版本要在4.0以上。这里用的是5.0版本。安装完后,启动TOMCAT,访问http://localhost:8080/安装成功应该出现Apache启动页面。以下用TOMCAT_HOME表示TOMCAT的安装主目录。 解压缩AXIS软件包(这里为1.4版本axis.war包)。 将axis项目放在某个盘的根目录下,(因在tomcat的安装目录在版本号前有个空格,配置axis环境变量时系统认不到对应的变量路径) 如:D:\axis;然后在TOMCAT的server.xml的添加项目加载的<Context>: <Context path="/axis" docBase="D:/axis" debug="0" reloadable="true" crossContext="true"></Context> 重新启动TOMCAT,访问http://localhost:8080/axis/,出现Apache-Axis启动页面。点击链接Validation进入页面。上面会显示已经找到的jar包和未找到的jar包。对于未找到的jar包。可以从它提示的链接中下载。我缺少activation.jar,mail.jar,xerces.jar这里在可选组件(optional components)中提示缺少xml-security包。从它提示的地址下载软件包后,解压缩后在lib文件夹下,将xalan.jar和xmlsec-1.2.1.jar复制到TOMCAT_HOME\webapps\axis\WEB-INF\lib下。重新启动TOMCAT,再点击链接Validation进入页面后。将没有未找到包的提示了。 接下来配置类路径。右键点击我的电脑——属性——高级——环境变量。在系统变量中选择ClassPath进行编辑。增加下列类路径(以“;”间隔符)。 D:\axis\WEB-INF\lib\activation.jar; D:\axis\WEB-INF\lib\axis.jar; D:\axis\WEB-INF\lib\axis-ant.jar; D:\axis\WEB-INF\lib\axis-schema.jar; D:\axis\WEB-INF\lib\commons-discovery-0.2.jar; D:\axis\WEB-INF\lib\commons-logging-1.0.4.jar; D:\axis\WEB-INF\lib\jaxrpc.jar; D:\axis\WEB-INF\lib\log4j-1.2.8.jar; D:\axis\WEB-INF\lib\mail.jar; D:\axis\WEB-INF\lib\saaj.jar; D:\axis\WEB-INF\lib\wsdl4j-1.5.1.jar; D:\axis\WEB-INF\lib\xmlsec.jar 启动TOMCAT,浏览器输入http://localhost:8080/axis/HelloWorldService.jws?wsdl 会出现wsdl页面。说明可以提供正常服务了。 现在可以制作客户端了程序了, 命令参数的形式: java org.apache.axis.wsdl.WSDL2Java http://localhost:8080/axis/HelloWorldService.jws?wsdl -p test.webservice -o C:\prj 参数说明: -p 指定生成的java文件包名 (可省略默认为 HelloWorldService内的包名路径) -o 指定生成的java文件输出目录 如果你看到这样的画面就表示正常运作并自动产生四个.JAVA的档案了,如果出现 org/apache/...CLASS NOT FOUND之类的话可能你的ClASSPATH设置的有问题。 在C:\prj\localhost\axis\HelloWorldService_jws下面产生以下四个文件 HelloWorldService.java HelloWorldServiceService.java HelloWorldServiceServiceLocator.java HelloWorldServiceSoapBindingStub.java 现在可以将以上生成的四个类进行调用已发布的webservice 注:HelloWorldService 的webservice已经创建在axis1.4.rar包内,只要运行axis项目即可访问到该webservice

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值