WebService发布服务器的几种方法

作为刚入职的小白分享一下最近学WebService后的成果

服务器的发布:
方法一: 使用JDK发布

创建一个java工程,在创建一个类,代码如下

import javax.jws.WebService;
import javax.xml.ws.Endpoint;

@WebService           //在要发布的类写上@WebService注解,要导 javax.jws.WebService 包;
public class MyService {

    public String sayMoning(String name){
        return "哦黑哟"+name;
    }

    public String sayHello(String name){
        return "hello"+name+",i am Service";
    }

    public static void main(String[] args) {
        //publish方法用于发布服务器  address:要发布的地址,注意端口不要被占用
        //implementor:要发布的对象

        Endpoint.publish("http://localhost:6789/service", new MyService());

        System.out.println("service ready ...");

        //运行后该类中所有的公有未注解方法被发布到服务器
        //在浏览器中输入http://localhost:6789/service/MyService?wsdl可以看到wsdl文档就是发布成功
        //用JDK发布服务器很简单,但是我用Docement方式客户端访问的时候会出现返回值为null的情况
    }
}

方法二打包发布
<1>:用windows命令打包成aar
准备工作:
首先可从http://ws.apache.org/axis2/ 下载Axis2的最新版本:
可以下载如下三个zip包:
axis2-eclipse-service-plugin-1.7.1.zip
axis2-eclipse-codegen-plugin-1.7.1.zip
axis2-1.7.1-war.zip
前两个是eclipse的插件包,解压放到eclipse安装目录的dropins即可
重启eclipse可以看到
axix2插件

axis2-1.7.1-war.zip文件用于将WebService发布到Web容器中。解压下后将axis2.war放至tomcat安装目录下的webapps文件夹下,然后启动tomcat后,在webapps目录下会生成axis2文件夹。 访问http://localhost:8080/axis2/能看到以下页面表示axis2运行成功。
这里写图片描述
第一步:创建一个java工程,创建要发布的类,写上要发布的方法

package com.cn.aar;

public class MyService{

    public String sayMoning(String name){
        return "哦黑哟"+name;
    }

    public String sayHello(String name){
        return "hello"+name+",i am Service";
    }
}

第二步:在工程下新建文件夹services/MyService, MyService下按类MyService.Java包路径建文件路径com/cn/aar 最后将编译后的MyService.class文件拷入com/cn/aar下, 在MyService文件夹下新建文件夹META-INF,META-INF下新建services.xml文件,代码如下

<?xml version="1.0" encoding="UTF-8"?>
<service name="MyService">  
    <description>Hello Friend Example</description>  
    <parameter name="ServiceClass">com.cn.aar.MyService</parameter>  
    <operation name="sayMoning">  
        <messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />  
    </operation>  
    <operation name="sayHello">  
        <messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />  
    </operation>
</service>  

包结构图片
包结构图片
第三步:在Windows命令行下进到services/MyService目录下运行:jar cvf MyService.aar . (最后有个点号)会在HelloFriend目录下生成HelloFriend.aar包

把MyService.aar拷入tomcat安装目录下的webapps/axis2/WEB-INF/services下,启动Tomcat再进入http://localhost:8080/axis2/进入Services就会看到MyService了。


<2>用axis2打包成arr
第一步:创建一个java工程,创建要发布的类,编辑服务代码

 package com.cn.aar;

public class MyService {

    public String sayGood(String name){
        return "good"+name;
    }

    public String sayHello(String name){
        return "Hello"+name+",i am Service";
    }
}

第二步:将代码打包 成aar文件

Eclipse菜单- New - File - Other -Axis2 Service Archiver点击next
这里写图片描述

class file location:路径选上刚刚所创建类下bin目录

这里写图片描述

这里写图片描述
这里写图片描述
这里写图片描述

Service name :输入服务名称(自定义)、Class name:类全名、点击load将方法名查出来、选择Search declared methods only,就会看到我们定义的方法,勾选上

这里写图片描述

设置aar文件名以及存放目录(我是放在桌面)后点Finish:
完成后,可以看到桌面上多了一个Myservice.aar文件

这里写图片描述

把MyService.aar拷入tomcat安装目录下的webapps/axis2/WEB-INF/services下,启动Tomcat,再进入http://localhost:8080/axis2/进入Services就会看到MyService了。

方法三:不打包发布

这里写图片描述
创建一个Web工程,建立如下所示的包结构,其中conf、lib、modules、services这四个目录从tomcat安装目录下的\webapps\axis2\WEB-INF下拷贝,(把axis2.war文件拷到tomcat安装目录下的webapps文件夹下才会有axis2目录)(lib目录只拷贝jar包)
在services目录下建HelloWord/META-INF/services.xml
这里写图片描述

services.xml代码如下

<service name="MyService" >
    <description>
        Please Type your service description here
    </description>
    <messageReceivers>
        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
        <messageReceiver  mep="http://www.w3.org/2004/08/wsdl/in-out"  class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
    </messageReceivers>
    <parameter name="ServiceClass">com.cm.service.HelloWord</parameter>
</service>

web.xml代码如下

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="wmf" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

    <servlet>
        <servlet-name>AxisServlet</servlet-name>
        <servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>AxisServlet</servlet-name>
        <url-pattern>/services/*</url-pattern>
    </servlet-mapping>
</web-app> 

最后把工程发布到Tomcat访问的到http://localhost:8080/HellWord/services/MyService?wsdl代表发布成功

下一篇是客户端的方法
总结
问题:用jdk发布的话,用客户端访问会出现返回值为null的情况,其他的发布方法就不会

WebService是基于网络的、分布式的模块化组件,它执行特定的任务,遵守具体的技术规范,这些规范使得Web服务能和其他兼容的组件进行互操作。WebService主要分为以下几种类型: 1. SOAP (Simple Object Access Protocol):SOAP是一种基于XML的协议,用于在网络应用程序之间进行结构化信息交换。SOAP基于HTTP协议,可以使用任何传输协议,但通常使用HTTP进行传输。SOAP消息严格遵循XML格式,因此它具有良好的跨平台性和语言无关性。 2. REST (Representational State Transfer):REST是一种软件架构风格,它通常用于构建Web服务。RESTful服务不是基于SOAP协议,而是通过HTTP协议直接与客户端进行交互,客户端可以通过HTTP的GET、POST、PUT、DELETE等方法操作服务器上的资源。REST风格的Web服务通常返回JSON或XML格式的数据,具有简单、轻量级的特点。 3. XML-RPC (XML Remote Procedure Call):XML-RPC是一种使用HTTP作为传输协议,XML来编码其调用的远程过程调用(RPC)协议。它是一种较早的技术,允许不同的计算机平台通过HTTP协议和XML交换调用信息。XML-RPC允许使用任何编程语言来实现客户端和服务器端的代码。 4. JSON-RPC:JSON-RPC是一种轻量级的远程过程调用协议,使用JSON作为数据交换格式。它类似于XML-RPC,但使用JSON作为数据的编码方式,因此可以比XML更简洁、更快速。 5. Web Services Description Language (WSDL):WSDL是一种XML格式的语言,用于描述网络服务的能力,比如支持的操作、输入输出消息的格式等。它是Web服务的元数据描述语言,可以让服务的使用者了解如何与服务进行交互。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值