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的情况,其他的发布方法就不会

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值