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

2.WebService之AXIS定制发布

发布时间:2020-12-17 00:01:44 所属栏目:安全 来源:网络整理
导读:? ? WebService基础学习笔记 - 2.WebService之AXIS定制发布 ? ? 发布WSDD ?????? 1只有class,包含包的结构; ????????????? 实现步骤: ???????????????????? 1编写带有包结构的java代码(普通:方法的编写) ???????????????????? 2将该程序进行编译 –clas

?

?

WebService基础学习笔记 - 2.WebService之AXIS定制发布

?

?

发布WSDD

?????? 1只有class,包含包的结构;

????????????? 实现步骤:

???????????????????? 1编写带有包结构的java代码(普通:方法的编写)

???????????????????? 2将该程序进行编译 –class;

???????????????????? 3将编译后的结构;

???????????????????? 4使用命令在axis服务平台上注册服务(声明服务的方法);

????????????????????

AxisWEB-INF

???????????????????? 1编写一个当前的项目配置文件server-config.wsdd;

??????????????????????????? 1编写一个*.wsdd文件,描述某一个web服务;

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

??????????????????????????????????????????????????????? Xmlns:java=http://xml.apache.org/axis/wsdd/providers/java>

?????????????????? ??????????????????????????? <service name=”urn:cominfo” provider=”java:RPC”>

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

??????????????????????????????????????????????????????? <parametername=”className” value=”方法名(*)”/>

?????????????????????????????????????????????? <service>

???????????????????????????????????? </deployment>

?

2 在Axisweb-inf下面执行命令:

?

java org.apache.axis.client.AdminClient *.wsdd : axis.jar中类 –CLASSPATH

?

?

?????? ????????????? 3 将编译后的结果(包含包的层次)拷贝到AxisWEB-INFclasses下;

????????????? ?????? 4 使用命令在axis服务平台上注册服务(声明服务的方法)

?

?????? 5 文件的结构

?????? AXIS

????????????? WEB-INF

???????????????????? ----server-config.wsdd

???????????????????? classes

??????????????????????????? ----包结构的java服务类

?

?????? 6 修改server-config.wsdd

?

?????? 7 取消服务:

????????????? 1编写取消的*wsdd

???????????????????? <undeploymentname=”test” xmlns=http://xml.apache.org/axis/wsdd/

???????????????????? ??? <service name=”要取消的服务名” />

</undeployment>

??????

????????????? 2执行命令

???????????????????? Javaorg.apache.axis.client.AdminClient 取消.wsdd;

?

?

?????? 8. Web Service Object的生存的范围

?????? ?????? <parametername=”scope” value=”request/session/application” />

????????????? request:Axis为每一个SOAP的请求产生服务对象 ----针对于请求;

????????????? session:Axis为每一个调用webService的客户端产生服务对象 ---- 针对会话;

????????????? application:在服务器的内存中直接new一个服务对象;

?

?

?

?

?

以下是练习:

?

服务端编写:

?

package com.webservice.wsdd;

public class HelloWSDD {

?

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

??? private int requestCount = 0;

??? public String hello(String name){

?????? requestCount++;

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

?????? return "欢迎您:" + name;

??? }

???

??? public Float add(Float a,Float b){

?????? return a+b;

??? }

???

??? public static void main(String[] args) {

?????? new HelloWSDD();

??? }

}

?

?

编译服务端代码:

?????? 将服务端的类,编译成class文件,然后连报名一起复制到AxisWEB-INFclasses目录下;

?

?

编写server-config.wsdd文件:

?

?????? 全部内容如下:

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

<deployment

xmlns="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.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>??

???????????? <handler type="java:org.apache.axis.handlers.JWSHandler">???

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

???????????? </handler>??

???????????? <handler type="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">

?????????? <parameter name="className"

value="com.webservice.wsdd.HelloWSDD"/>??

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

??? </service>

?

?

???? <transport name="http">?

???????? <requestFlow>??

??????????? ?<handler type="URLMapper"/>??

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

???????? </requestFlow>

???? </transport>

???? <transport name="local">?

???????? <responseFlow>??

???????????? <handler type="LocalResponder"/>?

???????? </responseFlow>

???? </transport>

</deployment>

?

?

?

?

客户端调用编写:

?

package com.client;

?

import java.rmi.RemoteException;

import javax.xml.namespace.QName;

import javax.xml.rpc.ServiceException;

import org.apache.axis.client.Call;

import org.apache.axis.client.Service;

?

public class TestClient {

??? public static void main(String[] args)

throws ServiceException,RemoteException {

?????? String url = "http://localhost:8080/axis/services/HelloWSDD";

?????? /*区别于JWS方式的指定

hptt://localhost:8080/axis/services/HelloWSDD.jws

*/

?????? Service service = new Service();

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

?????? call.setTargetEndpointAddress(url);

?????? call.setOperationName(new QName(url,"add")); //解析wsdl文件

?????? Float returnValue = (Float) call.invoke(new Object[]{

new Float(3.2),

new Float(2.8)});

?????? System.out.println(returnValue);

??? }

}

(编辑:李大同)

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

    推荐文章
      热点阅读