Web Service之AXIS定制发布

2024-06-08 10:08
文章标签 定制 web 发布 service axis

本文主要是介绍Web Service之AXIS定制发布,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

新建一个服务端java项目,在里面先写一个服务端的java代码(HelloWSDD.java),代码如下:

 

publicclassHelloWSDD {

   //定制提供web服务的方法

   privateintrequestCount = 0 ;

   public String hello(Stringname){

     requestCount++ ;

     System.out.println("调用的次数"+requestCount);

     return"欢迎你 " + name ;

   }

   public Float add(Float a,Floatb){

     requestCount++ ;

     System.out.println("调用的次数"+requestCount);

     return a + b ;

   }

}

 

保存这个文件,如果myeclipse已经设置为自动编译的话,就直接到项目里面找出编译出的HelloWSDD.Class文件,如果不是自动编译,编译后再找这个文件。把这个文件(包含包的结构,比如我的包是com. webservice.wsdd,就直接把com包复制出来)复制到tomcat里面的axis目录中的\WEB-INF\classes。既然class文件可以,那么生成的jar包也不会有什么问题了。

 

编写一个个人的*.wsdd文件,描述一个web服务,在官网上下的axis里面有samples文件夹,里面有例子,不过我这个没有。

那么就编写一个叫HelloWSDD.wsdd的文件,里面的代码如下:

 

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

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

 

 

       <servicename="urn:cominfo" provider="java:RPC">

              <parametername="className" value="指明需要发布的类绝对位置" />

              <parametername="allowedMethods" value="方法名" />

       </service>

 

</depoyment>

 

把这个文件放到tomcat里面的axis文件夹里面的的web-inf文件夹里面。再运用命令行的方式会自动生成server-config.wsdd文件,不过这种方法有点麻烦,不如直接编写server-config.wsdd,具体代码如下:


<?xml version="1.0"encoding="UTF-8"?>

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

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

      

       <globalConfiguration>

              <parametername="adminPassword" value="admin" />

              <parametername="attachments.implementation"value="org.apache.axis.attachments.AttachmentsImpl" />

              <parametername="sendXsiTypes" value="true" />

              <parametername="sendMultiRefs" value="true" />

              <parametername="sendXMLDeclaration" value="true" />

              <parametername="axis.sendMinimizedElements" value="true" />

 

              <requestFlow>

                     <handlertype="java:org.apache.axis.handlers.JWSHandler">

                            <parametername="scope" value="request" />

                            <parametername="extension" value=".jwr" />

                     </handler>

              </requestFlow>

       </globalConfiguration>

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

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

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

 

       <servicename="HelloWSDD" provider="java:RPC">

              <parametername="className" value="com.webservice.wsdd.HelloWSDD"/>

              <parametername="allowedMethods" value="*" />

       </service>

 

       <transportname="http">

              <requestFlow>

                     <handlertype="URLMapper" />

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

              </requestFlow>

       </transport>

       <transportname="local">

              <requestFlow>

                     <handlertype="LocalResponder" />

              </requestFlow>

       </transport>

 

</deployment>

 

上面的文件是完全抄视频的,一个个字母地敲,累死人了。敲完,运行tomcat,报错!仔细又核对,发现两处小错误,又运行,还是不行!说什么deployment写错了,推荐的写法是deployment,这不是完全一样的吗?!真是郁闷。搞了半天,都不行,只好不按视频的教法来做。把HelloWSDD.wsdd放到了WEB-INF目录中,这个文件是这样编写的:

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

       <servicename="HelloWSDD" provider="java:RPC" style="rpc"use="encoded">

              <parametername="wsdlTargetNamespace"value="http://wsdd.webservice.com" />

              <parametername="className" value="com.webservice.wsdd.HelloWSDD"/>

              <parametername="scope" value="Application" />

              <parametername="allowedMethods" value="*" />

       </service>

</deployment>

开启CMD,进入WEB-INF这个目录,运行以下命令:

Java -Djava.ext.dirs=liborg.apache.axis.client.AdminClient –l http://localhost:8089/axis/servlet/AxisServletHelloWSDD.wsdd

出现了如下错误:

查了资料,说axis的环境变量没有配好!没办法,配呗!

AXIS_HOME:

C:\tomcat7.0\webapps\axis\WEB-INF\lib

AXISCLASSPATH:

.;%AXIS_HOME%\activation.jar;%AXIS_HOME%\axis.jar;%AXIS_HOME%\axis-schema.jar;%AXIS_HOME%\axis-ant.jar;%AXIS_HOME%\commons-discovery-0.2.jar;%AXIS_HOME%\commons-logging-1.0.4.jar;%AXIS_HOME%\jaxrpc.jar;%AXIS_HOME%\log4j-1.2.8.jar;%AXIS_HOME%\mail.jar;%AXIS_HOME%\saaj.jar;%AXIS_HOME%\wsdl4j-1.5.1.jar;%AXIS_HOME%\xmlsec.jar

在classpath后面添加

% AXISCLASSPATH %

重启tomcat,又是输入命令。还是不行!

再查资料,又有人说WEB-INF里面又有一个现成的server-config.wsdd。又去下载一个。重启tomcat居然不报错,很好。接着重复刚才的操作,还是不行,跳出一样的错误信息!再查资料,又有人说tomcat端口号要设为默认的8080。好和axis默认配置对应才行,所以把tomcat端口号改回8080,再试,还是不行啊!真是没法了!最后回归按视频的操作,在server-config.wsdd里面修改service的属性。重启tomcat,没有报错,在浏览器里面输入:http://localhost:8089/axis/servlet/AxisServlet  终于跳出了理想的效果:

搞这个东西居然花费了大约四个钟头!真是折磨人啊!自己手贱,把axis的环境变量配置全部删除了,不过也没有出现错误。看来问题的根源还是视频的server-config.wsdd代码有不正确的地方。

 

正确的server-config.wsdd代码:

<?xml version="1.0"encoding="UTF-8"?>

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

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

<globalConfiguration>

 <parameter name="adminPassword"value="admin"/>

 <parameter name="attachments.Directory"value="./attachments"/>

 <parameter name="attachments.implementation"value="org.apache.axis.attachments.AttachmentsImpl"/>

 <parameter name="sendXsiTypes" value="true"/>

 <parameter name="sendMultiRefs" value="true"/>

 <parameter name="sendXMLDeclaration"value="true"/>

 <parameter name="axis.sendMinimizedElements"value="true"/>

 <requestFlow>

       <handlertype="java:org.apache.axis.handlers.JWSHandler">

   <parameter name="scope" value="session"/>

  </handler>

  <handlertype="java:org.apache.axis.handlers.JWSHandler">

   <parameter name="scope" value="request"/>

   <parameter name="extension" value=".jwr"/>

  </handler>

 </requestFlow>

 </globalConfiguration>

 <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="HelloWSDD"provider="java:RPC">

              <parametername="className" value="com.webservice.wsdd.HelloWSDD"/>

              <parametername="allowedMethods" value="*" />

       </service>

 

<transport name="http">

 <requestFlow>

  <handler type="URLMapper"/>

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

 </requestFlow>

 </transport>

 <transport name="local">

 <responseFlow>

  <handler type="LocalResponder"/>

 </responseFlow>

 </transport>

</deployment>

 

 

回到客户端的那个项目,在里面编写调用的代码。文件名为:TestClient.java

代码如下:

 

import javax.xml.namespace.QName;

 

import org.apache.axis.client.Call;

import org.apache.axis.client.Service;

 

publicclassTestClient {

 

   publicstaticvoid main(String[] args) throws Exception {

     //指定获取web服务的位置

     Stringurl = "http://localhost:8089/axis/services/HelloWSDD" ;

     //区别于jws方式的指定:http://localhost:8089/axis/Hello.jws

      Service service = new Service() ;

     Callcall = (Call) service.createCall() ;

     call.setTargetEndpointAddress(new java.net.URL(url)) ;

     call.setOperationName(new QName(url,"add")) ;

     FloatreturnValue = (Float) call.invoke(new Object[]{newFloat(3.2),newFloat(4.5)}) ;

     System.out.println(returnValue);

   }

}

 

运行,控制台出现了结果:7.7

再看tomcat的控制台,服务器这边出现了:“调用的次数1”的字样!再运行客户端这边的程序,还是出现同样的字样,可见是重新调用服务器这边的服务了。如果要改变这种现象,就要修改服务端这边的配置信息。

 

接下来编写取消的服务:*.wsdd

只要把元素deployment改为undeployment就行了。

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

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

       <servicename=”要取消的服务名”>

</ undeployment >

以后取消服务其实也不用这么麻烦,直接删除或者注销服务就行了。

 

Web Service Object的生存范围

<parameter name=”scope”value=”request/session/application” />

request :Axis为每一个SOAP的请求产生服务对象——针对于请求,缺点开销大

session:Axis为每一个调用WebService的客户端产生服务对象——针对会话

application:Axis在服务器的内存中直接new一个服务对象,然后所有的web的对象都调用这个对象。优点开销最小,缺点就是个性化不能满足。

 

针对相关的服务设置对应的请求范围。


这篇关于Web Service之AXIS定制发布的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1041879

相关文章

手把手教你idea中创建一个javaweb(webapp)项目详细图文教程

《手把手教你idea中创建一个javaweb(webapp)项目详细图文教程》:本文主要介绍如何使用IntelliJIDEA创建一个Maven项目,并配置Tomcat服务器进行运行,过程包括创建... 1.启动idea2.创建项目模板点击项目-新建项目-选择maven,显示如下页面输入项目名称,选择

高效+灵活,万博智云全球发布AWS无代理跨云容灾方案!

摘要 近日,万博智云推出了基于AWS的无代理跨云容灾解决方案,并与拉丁美洲,中东,亚洲的合作伙伴面向全球开展了联合发布。这一方案以AWS应用环境为基础,将HyperBDR平台的高效、灵活和成本效益优势与无代理功能相结合,为全球企业带来实现了更便捷、经济的数据保护。 一、全球联合发布 9月2日,万博智云CEO Michael Wong在线上平台发布AWS无代理跨云容灾解决方案的阐述视频,介绍了

Java Web指的是什么

Java Web指的是使用Java技术进行Web开发的一种方式。Java在Web开发领域有着广泛的应用,主要通过Java EE(Enterprise Edition)平台来实现。  主要特点和技术包括: 1. Servlets和JSP:     Servlets 是Java编写的服务器端程序,用于处理客户端请求和生成动态网页内容。     JSP(JavaServer Pages)

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码

Vue3项目开发——新闻发布管理系统(六)

文章目录 八、首页设计开发1、页面设计2、登录访问拦截实现3、用户基本信息显示①封装用户基本信息获取接口②用户基本信息存储③用户基本信息调用④用户基本信息动态渲染 4、退出功能实现①注册点击事件②添加退出功能③数据清理 5、代码下载 八、首页设计开发 登录成功后,系统就进入了首页。接下来,也就进行首页的开发了。 1、页面设计 系统页面主要分为三部分,左侧为系统的菜单栏,右侧

EasyPlayer.js网页H5 Web js播放器能力合集

最近遇到一个需求,要求做一款播放器,发现能力上跟EasyPlayer.js基本一致,满足要求: 需求 功性能 分类 需求描述 功能 预览 分屏模式 单分屏(单屏/全屏) 多分屏(2*2) 多分屏(3*3) 多分屏(4*4) 播放控制 播放(单个或全部) 暂停(暂停时展示最后一帧画面) 停止(单个或全部) 声音控制(开关/音量调节) 主辅码流切换 辅助功能 屏

9.8javaweb项目总结

1.主界面用户信息显示 登录成功后,将用户信息存储在记录在 localStorage中,然后进入界面之前通过js来渲染主界面 存储用户信息 将用户信息渲染在主界面上,并且头像设置跳转,到个人资料界面 这里数据库中还没有设置相关信息 2.模糊查找 检测输入框是否有变更,有的话调用方法,进行查找 发送检测请求,然后接收的时候设置最多显示四个类似的搜索结果

JavaWeb【day09】--(Mybatis)

1. Mybatis基础操作 学习完mybatis入门后,我们继续学习mybatis基础操作。 1.1 需求 需求说明: 根据资料中提供的《tlias智能学习辅助系统》页面原型及需求,完成员工管理的需求开发。 通过分析以上的页面原型和需求,我们确定了功能列表: 查询 根据主键ID查询 条件查询 新增 更新 删除 根据主键ID删除 根据主键ID批量删除

maven发布项目到私服-snapshot快照库和release发布库的区别和作用及maven常用命令

maven发布项目到私服-snapshot快照库和release发布库的区别和作用及maven常用命令 在日常的工作中由于各种原因,会出现这样一种情况,某些项目并没有打包至mvnrepository。如果采用原始直接打包放到lib目录的方式进行处理,便对项目的管理带来一些不必要的麻烦。例如版本升级后需要重新打包并,替换原有jar包等等一些额外的工作量和麻烦。为了避免这些不必要的麻烦,通常我们

禅道Docker安装包发布

禅道Docker安装包发布 大家好, 禅道Docker安装包发布。 一、下载地址 禅道开源版:   /dl/zentao/docker/docker_zentao.zip  备用下载地址:https://download.csdn.net/download/u013490585/16271485 数据库用户名: root,默认密码: 123456。运行时,可以设置 MYSQL_ROOT_P