`
xy_z487
  • 浏览: 272397 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

muiu

阅读更多
[WS]使用Axis发布简单的Web服务(补充)

这篇帖子是对《使用Axis发布简单的Web服务》的补充。

可以看出,在Axis里书写deploy.wsdd并利用org.apache.axis.client.AdminClient发布,其主要工作就是把<service>标签中的内容添加在server-config.wsdd里,所以一般直接编辑server- config.wsdd文件会更方便一些。不过当你还没有server-config.wsdd文件时,使用deploy.wsdd的方法会更方便些,因为AdminClient会帮你生成一些额外的xml元素(<handler>等等),而这些元素是必要的。

服务发布以后,就可以在IE浏览器里看到它的WSDL,一般是服务的URL后面加一个“?wsdl”,例如添加图书的WSDL可以通过http://localhost:8080/bookstore/services/BookSvc?wsdl看到。至于Java类是以何种规则映射到WSDL的,请参考JAX-RPC规范;WSDL本身的说明见这里;为了搞清生成的WSDL中各种URL格式的名称空间,最好对XML Schema有所了解,我觉得这篇文章还不错。

我们还可以通过IE浏览器直接调用服务,方法是在服务URL后加“method=xxx”,其中xxx是要调用的方法名称。例如可以通过http://localhost:8080/bookstore/services/BookSvc?method=addBook调用添加图书方法,按照我们的服务类,在Tomcat的控制台上应该可以看到打出了“Book has been added.”的字样。

因为添加图书方法的参数是一个自定义类型,所以在IE里调用时不能指定参数值(或者是可以以其他格式指定,但我还不知道);如果参数是简单类型,就可以指定了。例如我们可以为BookSvc增加一个echo()方法,参数是一个java.lang.String类型的值,如下所示,然后重新编译并启动Tomcat(server-config.wsdd文件不必更改)。
public void echo(String str){
    System.out.println("Hello "+str);
}

在IE里输入http://localhost:8080/bookstore/services/BookSvc?method=echo&str=Mike,就会看到Tomcat的控制台里打出了“Hello Mike”。如果有多个参数,只要把这些参数都列在URL里即可。

相关链接:

    * 使用Axis发布简单的Web服务
[WS]使用Axis发布简单的Web服务

使用Axis,要发布一个Web服务非常简单,简直不能再简单了,尽管看起来过程和相关代码有些长。我这个帖子里用到了这些软件:Axis 1.1、Eclipse 2.1和Eclipse的Tomcat插件2.2(Sysdeo Tomcat plugin)。发布的方法如下:

我要发布的服务是一个图书商店,公布的方法有添加图书addBook、列表图书listBooks、删除图书deleteBook等等,为简单起见这里就只发布一个添加图书方法,因为其他方法的发布是类似的。

1、首先在Eclipse里新建一个名为bookstore的Tomcat工程,注意要安装了前面说的Tomcat插件才有这个选项的。如果没有安装可以建立一个java工程,然后手动建立必要的目录结构(WEB-INF等),并在Tomcat的server.xml里手动增加与项目对应的<context>项。

2、接下来建立图书类(com.bookstore.model.Book),图书有名称、ISDN号和页数三个属性,这是一个Bean类,代码如下:
package com.bookstore.model;

public class Book {
    private String name;
    private String ISDN;
    private int page;

    public String getISDN() {
        return ISDN;
    }

    public String getName() {
        return name;
    }

    public int getPage() {
        return page;
    }

    public void setISDN(String string) {
        ISDN = string;
    }

    public void setName(String string) {
        name = string;
    }

    public void setPage(int i) {
        page = i;
    }

}

3、接下来建立用来提供服务的类(com.bookstore.BookSvc),这个类就是实际的功能类了,它里面只有一个public的addBook()方法,而它的参数只有一个就是要添加的图书。代码如下:
package com.bookstore;

import com.bookstore.model.Book;

public class BookSvc {
   
    public void addBook(Book book){
        //here you save a book into database
        System.out.println("Book has been added.");
    }
}

4、现在,把下载来的Axis解压缩到一个文件夹,这里假设你解到C:\axis-1_1。把C:\axis-1_1\webapps\axis \WEB-INF\lib目录下的所有.jar文件复制到你的这个web应用程序的WEB-INF\lib下,再把C:\axis-1_1 \webapps\axis\WEB-INF目录下的web.xml复制到你的web应用程序的WEB-INF下。这个步骤相当于在你的web应用程序中配置了Axis。

5、为了让Axis知道你要发布哪些服务,你得在WEB-INF下建立一个名为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.Directory" value="C:\eclipse\workspace\bookstore\WEB-INF\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>
   <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="Authenticate" type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>
<handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper"/>
<service name="Version" provider="java:RPC">
  <parameter name="allowedMethods" value="getVersion"/>
  <parameter name="className" value="org.apache.axis.Version"/>
</service>
<service name="BookSvc" provider="java:RPC">
  <parameter name="allowedMethods" value="*"/>
  <parameter name="className" value="com.bookstore.BookSvc"/>
</service>
<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>
<transport name="local">
  <responseFlow>
   <handler type="LocalResponder"/>
  </responseFlow>
</transport>
<transport name="http">
  <requestFlow>
   <handler type="URLMapper"/>
   <handler type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/>
  </requestFlow>
</transport>
</deployment>

这个文件里发布了三个服务:Version、AdminService和我们的BookSvc。还有一个方法可以生成这个文件,好象Axis推荐使用这种生成的方法,就是在同样目录下写一个deploy.wsdd文件(如果不想看可以直接跳到下一步),内容如下:
<deployment xmlns="http://xml.apache.org/axis/wsdd/"
            xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<service name="BookSvc" provider="java:RPC">
  <parameter name="className" value="com.bookstore.BookSvc"/>
  <parameter name="allowedMethods" value="*"/>
</service>
</deployment>

也就是说deploy.wsdd里只包含关于我们的服务的描述,确认Tomcat已经启动,然后在同一目录下用下面这个命令生成server-config.wsdd文件:
java org.apache.axis.client.AdminClient -lhttp://localhost:8080/bookstore/services/AdminService deploy.wsdd

其中bookstore是我这个web应用程序的虚拟路径。

6、重新启动Tomcat,访问路径http://localhost:8080/bookstore/services,就可以看到现在发布了三个Web服务,如下图。点击每个服务后的wsdl链接可以看到对应的WSDL描述。

相关链接:
分享到:
评论

相关推荐

    iceberg-flink-runtime-1.15-1.1.0.jar

    iceberg-flink-runtime-1.15-1.1.0.jar

    2024-2030中国PID光致电离传感器与探测器市场现状研究分析与发展前景预测报告 Sample.pdf

    QYResearch是全球知名的大型咨询公司,行业涵盖各高科技行业产业链细分市场,横跨如半导体产业链(半导体设备及零部件、半导体材料、集成电路、制造、封测、分立器件、传感器、光电器件)、光伏产业链(设备、硅料/硅片、电池片、组件、辅料支架、逆变器、电站终端)、新能源汽车产业链(动力电池及材料、电驱电控、汽车半导体/电子、整车、充电桩)、通信产业链(通信系统设备、终端设备、电子元器件、射频前端、光模块、4G/5G/6G、宽带、IoT、数字经济、AI)、先进材料产业链(金属材料、高分子材料、陶瓷材料、纳米材料等)、机械制造产业链(数控机床、工程机械、电气机械、3C自动化、工业机器人、激光、工控、无人机)、食品药品、医疗器械、农业等。 邮箱:market@qyresearch.com

    中医药研发风险分担基金申请专家组评审表.docx

    中医药研发风险分担基金申请专家组评审表.docx

    结晶型聚酯树脂,全球前10强生产商排名及市场份额调研数据(by QYResearch).pdf

    QYResearch是全球知名的大型咨询公司,行业涵盖各高科技行业产业链细分市场,横跨如半导体产业链(半导体设备及零部件、半导体材料、集成电路、制造、封测、分立器件、传感器、光电器件)、光伏产业链(设备、硅料/硅片、电池片、组件、辅料支架、逆变器、电站终端)、新能源汽车产业链(动力电池及材料、电驱电控、汽车半导体/电子、整车、充电桩)、通信产业链(通信系统设备、终端设备、电子元器件、射频前端、光模块、4G/5G/6G、宽带、IoT、数字经济、AI)、先进材料产业链(金属材料、高分子材料、陶瓷材料、纳米材料等)、机械制造产业链(数控机床、工程机械、电气机械、3C自动化、工业机器人、激光、工控、无人机)、食品药品、医疗器械、农业等。 邮箱:market@qyresearch.com

    whatcanIsay2_1.cpp

    whatcanIsay2_1.cpp

    校园绿化主要工作管理方案.docx

    校园绿化主要工作管理方案.docx

    C++ 管理系统教程.docx.docx

    c++管理系统 初识 C++ 管理系统 开发环境配置:详细指导如何在各大主流操作系统(Windows、macOS、Linux)上配置 C++ 开发环境,确保读者能顺利开始编码。 项目结构介绍:讲解管理系统基本项目结构的组成部分及其作用,帮助读者理清项目开发思路。 2. 基本功能实现 类和对象:深入讲解 C++ 类和对象的使用,并通过实例展示如何实现用户和管理员的基本管理功能。 文件操作:介绍如何利用 C++ 的文件操作特性来实现数据的持久化存储,确保系统数据在程序关闭后仍能保留。 简单交互界面:通过命令行界面与用户进行交互,使读者初步体验系统功能的实际操作。 3. 进阶功能拓展 错误处理:教授如何进行异常处理,提高系统的稳定性和可靠性,确保程序在异常情况下依然能正常运行。 简单的数据库集成:介绍如何使用 SQLite 实现基本的数据库功能,帮助读者管理和存储用户数据。 图形用户界面(GUI):演示如何使用 Qt 或其他库来构建简易的图形界面,从而提升用户体验。

    学习记录Django学习(图书馆项目)

    在学习过程中跟着网上相关教程练手模仿的图书馆项目(相当简陋)

    利用TensorRT对yolov5s进行加速,并将其应用于ROS,实现交通标志、红绿灯(直接输出路灯状态)、行人和车辆等交通场景

    【作品名称】:利用TensorRT对yolov5s进行加速,并将其应用于ROS,实现交通标志、红绿灯(直接输出路灯状态)、行人和车辆等交通场景 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】:利用TensorRT对yolov5s进行加速,并将其应用于ROS,实现交通标志、红绿灯(直接输出路灯状态)、行人和车辆等交通场景的检测。 在本人的jetson Agx xavier开发板上跑出约19ms~20ms/帧的速度,并可极好的检测目标物体,是配置自动驾驶算法的良好选择。 添加ROS通信 本项目使用自定义消息类型,如下所示: string ClassName int32 conf int32 tl_x int32 tl_y int32 br_x int32 br_y 运行如下操作 #终端1 cd yolov5s_trt_ros catkin_make roslaunch usb_cam usb_cam-test.launch \\运行usb摄像头 #终端2 rosrun yolo_de

    Java版本的P2P-NAT穿透之UDP穿透

    Java版本的P2P-NAT穿透之UDP协议,需要读者了解socket编程,了解一点Netty编程和JavaFx客户端基础知识。如果有不会使用的可以加作者QQ:541655940辅助部署测试和使用

    数字电子时钟课程设计.docx

    数字电子时钟课程设计 数字电子时钟课程设计 一、设计目的 了解和掌握数字电路的基本原理和设计方法,特别是关于时钟电路的设计和应用。 学会使用集成电路和数字电路元件来实现数字电子时钟的功能。 通过实际制作和测试,提高分析问题和解决问题的能力。 二、设计原理 数字电子时钟主要由以下几个部分组成: 振荡器:作为整个系统的时基信号,产生稳定的频率信号。通常使用石英晶体振荡器,因为它具有高精度和稳定性。 分频器:将振荡器产生的高频信号分频为所需的低频信号,例如每秒一次的“秒”信号。 计数器:根据“秒”信号进行计数,实现时、分、秒的计时功能。计数器通常包括秒计数器、分计数器和时计数器。 译码显示电路:将计数器的输出信号转换为可显示的数字信号,并驱动数码管或其他显示设备显示。 校时电路:用于手动调整时间,确保时钟的准确性。 三、设计方案 硬件设计: 选择适当的集成电路元件,如CD4060(14级二进制计数器)和CD4518(双BCD加计数器)来实现分频和计数功能。 设计合适的译码显示

    云卓H12说明书.pdf

    H12说明书

    国家开放大学数据库应用技术第三次形考作业2

    多表连接查询。写出实现如下查询的SQL语句。  (12) 查询选了C002课程的学生的姓名和所在系。  (13) 查询成绩80分以上的学生的姓名、课程号和成绩,并按成绩降序排列结果。  (14) 查询计算机系男生选修了“数据库基础”的学生的姓名和成绩。  (15) 查询学生的选课情况,要求列出每位学生的选课情况(包括未选课的学生),并列出学生的学号、姓名、课程号和考试成绩。  (16) 查询哪些课程没有人选修,要求列出课程号和课程名。  (17) 查询计算机系没有选课的学生,列出学生的姓名。

    Screenshot_20240605_230336.jpg

    Screenshot_20240605_230336.jpg

    ovlmenu.zip

    最新版本,官方正式版本,1.2.3版本。 因GitHub下载较慢,转存于CSDN。 Tesla-Menu是一款专为任天堂Switch自制系统(通常是大气层Atmosphere CFW)设计的悬浮层插件,它极大地增强了系统的便利性和可定制性。以下是关于Tesla-Menu插件的一些核心特点和功能介绍: 悬浮菜单快速访问:Tesla-Menu允许用户通过预设的按键组合(可在配置文件中自定义)在Switch的任何界面快速呼出一个悬浮菜单。这个菜单提供了对各种系统功能和插件的快速访问,无需退出当前应用或游戏。 功能丰富:菜单中集成了多项实用功能,例如开关FPS显示、硬件信息显示、超频设置、快速切换TV模式或掌机模式等。这些功能通常涉及系统调整、性能监控或是快速启动其他插件,为玩家提供了极大的便利。 资源友好:相比一些更复杂的插件或应用,Tesla-Menu被设计得较为精简,尽量减少对系统资源特别是GPU资源的占用。这使得它在掌机模式下表现更为稳定,减少了出错的概率。 高度可配置:用户可以通过编辑配置文件(通常是SD卡上的config/tesla/config.ini)来自定义呼出菜

    Tectia client

    Tectia client

    RPA实战演练UiBot6.0校园学生教评机器人

    校园学生教评机器人,也称为全自动校园教评RPA(Robotic Process Automation,机器人流程自动化)机器人,是一种利用软件机器人技术来模拟和执行学生教评流程中的各项任务和操作的智能化系统。以下是关于校园学生教评机器人的详细介绍: 一、定义与功能 校园学生教评机器人是一种使用预定规则和预定流程来执行重复性、繁琐或规定任务的技术。它可以模拟人类的操作,与学校的教务系统和相关应用程序进行交互,执行学生教评中的各项任务。这些任务包括但不限于: 自动收集和处理学生评教数据:机器人可以从不同的来源(如在线评教系统、学生调查问卷等)自动收集学生评教数据,并进行处理和分析。 自动生成评教报告:根据收集到的数据,机器人可以自动生成评教报告,包括教师评分、学生反馈等关键信息。 自动发送评教通知和报告:机器人可以向相关教师和部门自动发送评教通知和报告,确保评教结果的及时传达。

    2024年印度船用音响系统市场机会及渠道调研报告-样本.docx

    2024年印度船用音响系统市场机会及渠道调研报告-样本

    2024-2030中国波长选择开关模块市场现状研究分析与发展前景预测报告 Sample.pdf

    QYResearch是全球知名的大型咨询公司,行业涵盖各高科技行业产业链细分市场,横跨如半导体产业链(半导体设备及零部件、半导体材料、集成电路、制造、封测、分立器件、传感器、光电器件)、光伏产业链(设备、硅料/硅片、电池片、组件、辅料支架、逆变器、电站终端)、新能源汽车产业链(动力电池及材料、电驱电控、汽车半导体/电子、整车、充电桩)、通信产业链(通信系统设备、终端设备、电子元器件、射频前端、光模块、4G/5G/6G、宽带、IoT、数字经济、AI)、先进材料产业链(金属材料、高分子材料、陶瓷材料、纳米材料等)、机械制造产业链(数控机床、工程机械、电气机械、3C自动化、工业机器人、激光、工控、无人机)、食品药品、医疗器械、农业等。 邮箱:market@qyresearch.com

    2024-2030中国保险评级软件市场现状研究分析与发展前景预测报告 Sample.pdf

    QYResearch是全球知名的大型咨询公司,行业涵盖各高科技行业产业链细分市场,横跨如半导体产业链(半导体设备及零部件、半导体材料、集成电路、制造、封测、分立器件、传感器、光电器件)、光伏产业链(设备、硅料/硅片、电池片、组件、辅料支架、逆变器、电站终端)、新能源汽车产业链(动力电池及材料、电驱电控、汽车半导体/电子、整车、充电桩)、通信产业链(通信系统设备、终端设备、电子元器件、射频前端、光模块、4G/5G/6G、宽带、IoT、数字经济、AI)、先进材料产业链(金属材料、高分子材料、陶瓷材料、纳米材料等)、机械制造产业链(数控机床、工程机械、电气机械、3C自动化、工业机器人、激光、工控、无人机)、食品药品、医疗器械、农业等。 邮箱:market@qyresearch.com

Global site tag (gtag.js) - Google Analytics