`

axis定时发布

    博客分类:
  • ajax
阅读更多

2. 使用定制发布 Web Service Deployment Descriptor(WSDD)

 

   即时发布是一项令人激动的技术,它使Web服务的开发变得如此简单;然而即时发布并不总是最好的选择,比如有些应用系统是第三方提供的,我们没有购买源代码,只有.class文件,但我们又希望将这个应用系统的一些功能对外发布成Web服务,使其能够在更大范围内产生作用,这个时候即时发布技术就无能为力了。此外,即时发布技术并不灵活,无法进行更多的服务配置,这使得它并不能满足一些特定系统的需求。

  因此,Axis提供了另一种服务发布方式,这就是定制发布。

  在此给出一个从加仑到升的容积单位转换的服务,其源码如下:

  文件Capacity.java

    package test.capacity;

    public class Capacity

    {

        public double convertGallon2Litre( double gallon )

         {

           return gallon * 4.546;// 实现加仑到升的容积转换

          }//convertGallon2Litre()

     }

将其编译成.class文件,放置到“……

\webapps\axis\WEB-INF\classes\test\capacity ”目录下,即可着手进行发布。

    定制发布不需要构建.jws文件,但必须创建服务发布描述文件deploy.wsddWeb Service Deployment Descriptor的缩写),这个文件负责描述服务的名称、入口等信息,其内容如下:

    文件deploy.wsdd

<deployment

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

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

        <parameter name="className" value="test.capacity.Capacity"/>

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

    </service>

</deployment>

 

    在这里服务的提供者是“java:RPC”,它被内建在Axis中,而且指明了一个JAVA RPC服务,做这个处理的类是org.apache.axis.providers.java.RPCProvider

    我们是通过一个<parameter>标签告诉RPC服务应该调用的类,而另外一个<parameter>标签则告诉引擎,它可以调用这个类中的任何的Public方法。你也可以指定通过使用名字空间或者一些可以调用的方法列表,来指明那些方法可以被调用。

 

  将该文件也放到“……\webapps\axis\WEB-INF\classes\test\capacity”目录下,然后可以采用Axis提供的一个客户端管理工具——AdminClient来完成服务的定制发布。

   在“……\webapps\axis\test\capacity”目录下,运行:

 

set axis_lib=C:\apache-tomcat-5.5.17\webapps\axis\WEB-INF\lib

set axis_path=%axis_lib%\axis.jar;%axis_lib%\commons-discovery.jar;%axis_lib%\jaxrpc.jar;%axis_lib%\commons-logging.jar;%axis_lib%\log4j.jar;%axis_lib%\wsdl4j.jar;%axis_lib%\saaj.jar

 

java -classpath %axis_path% org.apache.axis.client.AdminClient deploy.wsdd

java -cp %axis_path% org.apache.axis.client.AdminClient list

   

 

   如果运行时说没有找到类,那么可能是类路径没有配置好,建议将所有的与axis相关的jar都写到classpath中去。这样只要运行:

 

   java org.apache.axis.client.AdminClient deploy.wsdd

   可以看到以下运行结果:

 

 Processing file deploy.wsdd

 <Admin>Doneprocessing</Admin>

 

这表明Capacity服务定制发布完成。

 

发布完成会增加或更新WEB-INF\server-config.wsdd的文件或内容。

 

<!-- handler -->

    <handler name="LocalResponder" type="java:org.apache.axis.transport.local.LocalResponder" />

    <handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper" />

    <handler name="Authenticate" type="java:org.apache.axis.handlers.SimpleAuthenticationHandler" />

   

    <!-- 系统服务

    <service name="AdminService" provider="java:MSG">

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

       <parameter name="enableRemoteAdmin" value="false" />

       <parameter name="className" value="org.apache.axis.utils.Admin" />

       <namespace>http://xml.apache.org/axis/wsdd/</namespace>

    </service>

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

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

       <parameter name="className" value="org.apache.axis.Version" />

    </service>

     -->

    <!-- 自定义服务 -->

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

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

       <parameter name="className" value="test.capacity.Capacity" />

    </service>

        

    <!-- transport to handler -->

    <transport name="http">

       <requestFlow>

           <handler type="URLMapper" />

           <handler type="java:org.apache.axis.handlers.http.HTTPAuthHandler" />

       </requestFlow>

       <parameter name="qs:list" value="org.apache.axis.transport.http.QSListHandler" />

       <parameter name="qs:wsdl" value="org.apache.axis.transport.http.QSWSDLHandler" />

       <parameter name="qs.list" value="org.apache.axis.transport.http.QSListHandler" />

       <parameter name="qs.method" value="org.apache.axis.transport.http.QSMethodHandler" />

       <parameter name="qs:method" value="org.apache.axis.transport.http.QSMethodHandler" />

       <parameter name="qs.wsdl"   value="org.apache.axis.transport.http.QSWSDLHandler" />

    </transport> 

    <transport name="local">

       <responseFlow>

           <handler type="LocalResponder" />

       </responseFlow>

    </transport>

 

   你也可以调用:

undeploy.wsdd 文件:

<undeployment

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

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

    <service name="Capacity"/>

</undeployment>

 

 java org.apache.axis.client.AdminClient undeploy.wsdd  来取消部署。

 

   你也可以调用:

 java org.apache.axis.client.AdminClient list 来获得所有的已经部署的服务的列表。在这里你会看到services, handlers, transports等等,注意这个调用只是列出了WEB-INF\server-config.wsdd的文件内容。

 

   一定要注意:编译后的class文件要拷贝到web-inf/classes的目录中,如果该文件中有包存在的话,别忘了还要在classes目录下创建包的目录。

   通过访问http://localhost:8080/axis/services/Capacity?wsdl可以看到这个服务的WSDL描述文件,这说明Capacity服务被成功发布了。

   你也可以通过访问http://localhost:8080/axis/servlet/AxisServlet查看所有定制发布的服务。

访问:

http://localhost:8080/axis/services/Capacity?method=convertGallon2Litre&gallon=100 可以看到执行结果。

 

 Web.xml

<servlet>

       <servlet-name>AxisServlet</servlet-name>

       <servlet-class>

           org.apache.axis.transport.http.AxisServlet

       </servlet-class>

    </servlet>

    <servlet-mapping>

       <servlet-name>AxisServlet</servlet-name>

       <url-pattern>*.jws</url-pattern>

    </servlet-mapping>

    <servlet-mapping>

       <servlet-name>AxisServlet</servlet-name>

       <url-pattern>/servlet/AxisServlet</url-pattern>

    </servlet-mapping>  

    <servlet-mapping>

       <servlet-name>AxisServlet</servlet-name>

       <url-pattern>/services/*</url-pattern>

    </servlet-mapping>  

   

    <servlet>

       <servlet-name>AdminServlet</servlet-name>

       <servlet-class>

           org.apache.axis.transport.http.AdminServlet

       </servlet-class>

       <load-on-startup>100</load-on-startup>

    </servlet>

    <servlet-mapping>

       <servlet-name>AdminServlet</servlet-name>

       <url-pattern>/servlet/AdminServlet</url-pattern>

    </servlet-mapping>

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    Spring3Mvc+Hibernate整合Axis2发布WebService并配置Quartz调度

    本主题聚焦于如何使用Spring3 MVC与Hibernate进行整合,以便更好地处理业务逻辑和数据持久化,并结合Axis2发布Web服务,同时利用Quartz进行任务调度。以下将详细介绍这些技术及其整合过程。 **Spring3 MVC** 是...

    Maven 项目 springMVC_Mybatis_Axis2_Task 整合

    每个组件都有其特定的优势,如Maven的自动化构建,springMVC的MVC模式,Mybatis的灵活数据库操作,Axis2的服务发布能力,以及Task的定时执行功能。通过合理整合,我们可以构建出一个强大且易维护的企业级应用系统。 ...

    springMVC_Mybatis_Axis2_Task java Project

    其中包含了Spring MVC用于处理Web应用的业务逻辑,MyBatis作为持久层框架来管理数据库操作,Axis2用于提供Web服务,而Task可能指的是Quartz或Spring Task等任务调度框架,用于执行定时任务。 首先,Spring MVC是...

    定时任务+soap

    为了实现这样的功能,开发者需要编写能够发送SOAP请求的代码,例如使用Java的JAX-WS或者.NET的SoapHttpClient类,将定时任务与SOAP调用相结合。 在提供的文件列表中,"remoteService"和"axisWebService"可能与SOAP ...

    AXIS摄像机基本调试说明书.docx

    13. **启动录像按钮**:设置录像触发条件,如手动、定时或运动检测,以便在需要时保存视频片段。 14. **恢复出厂值设置**:当需要重置所有设置或设备出现异常时,可以恢复出厂设置,清除所有个性化配置。 15. **...

    短信接口调用说明(JAVA)

    - `regularlytime`(可选): 如果需要定时发送短信,可以设置此字段,格式为`YYYY-MM-DD 24HH:mm:ss`。如果不需定时发送,则留空。 - `content`: 短信内容,最多允许280个字符。 - `phone`: 目标手机号码,多个...

    E8一个项目综合教程、泛微Ecology8简单一个完整项目代码

    这里演示了如何在Java中编写Webservice接口,对外提供服务,这可能涉及到JAX-WS或者 Axis2等框架的使用,以及WSDL(Web Service Description Language)的编写。 5. **Java定时任务**:Java的定时任务处理通常使用...

    带限基带传输系统的仿真.pdf

    * 采用脉冲发生器实现 1000Hz 的矩形脉冲作为恢复定时脉冲 * 乘法器以实现最佳采样时刻对接收滤波器输出的采样 * 最佳判决门限设为 0.5 * 以 10 倍降速率采样得出采样率为 1000Hz 的恢复数据 仿真结果显示,基带...

    Net-Cam : Free IP Video Surveillance-开源

    2. **录像功能**:支持定时录像和事件触发录像,如运动检测,确保关键事件不被遗漏。 3. **多摄像头支持**:虽然最初针对Axis 2100,但Net-Cam可能也支持其他兼容的网络摄像头,实现多摄像头监控。 4. **运动检测**...

    cBus 演示大纲.ppt

    5. **事件感知 - 服务调度**:示例5展示了如何构建基于事件驱动的 SOA(ED-SOA)系统,利用 WS-Eventing 规范进行事件发布和订阅。cBus 支持开发和处理这些事件,增强了系统的实时性和异步通信能力。 6. **客户端...

    ActiveMQ快速上手 PDF

    - Pub/Sub:发布者发送消息到一个主题,所有订阅该主题的消费者都能接收到消息。 - **API结构**:JMS 提供了 Session、MessageProducer、MessageConsumer 等接口来创建、发送和接收消息。 - **JMS应用开发的基本...

    Quartz Spring整合——附带webservice Demo

    由于文件列表中没有明确的 JAX-WS 或 CXF 相关库,可能示例是使用其他方式(如 Axis 或 JBossWS)实现的,或者仅涉及 Web 服务的调用而没有实际的 Web 服务实现。 6. **XML 处理**:文件列表中的 `xercesImpl` 和 `...

    JS-HTML-游戏

    9. **碰撞检测**:检测游戏元素间的碰撞是游戏逻辑的关键部分,可以使用简单的边界检查或更复杂的算法如分离轴定理(Separating Axis Theorem)。 10. **状态管理**:游戏中的各种状态(如玩家分数、游戏难度等)...

    PMAC 中文手册(推荐详细)+标签.pdf

    **PMAC** (Programmable Multi Axis Controller) 是一种高性能的多轴运动控制器,广泛应用于工业自动化领域,如机器人控制、精密机床控制等。它具备强大的计算能力和丰富的接口资源,能够实现复杂的运动控制逻辑。 ...

Global site tag (gtag.js) - Google Analytics