java开发Webservice的几种方式

本文介绍了使用Java开发Webservice的方法,包括服务端接口定义、实现类编写及部署过程,并提供了客户端调用Webservice的三种常见方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Webservice现在是越来越流行了,它的跨平台,低耦合的特性,得到越来越多开发者的青睐。这里总结几种java开发Webservice的方法,顺便整理下思路。
一、开发环境
集成工具:Eclipse
jdk:jdk1.7
服务器:linux/weblogic
二、服务端
服务端编写很简单,重点是注释,为了更规范些需要开发一个远程接口和远程接口实现类。
接口类:WebserviceTest.java


import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;

@WebService(name="WebserviceTest", targetNamespace="http://webservice.sword.css.com/")
public abstract interface WebserviceTest
{
  @WebMethod
  @WebResult(name="service", targetNamespace="http://webservice.sword.css.com/")
  public abstract String sayHello(@WebParam(name="name") String paramString);
}

远程接口实现类:

import java.io.PrintStream;
import javax.jws.WebService;

@WebService(endpointInterface="com.css.sword.webservice.WebserviceTest")
public class WebserviceTestImpl
  implements WebserviceTest
{
  public String sayHello(String name)
  {
    System.out.println("参数为" + name);
    return name;
  }
}

下面就这几个注释进行简单的解释:
@WebService 这个注释放置在 Java 类的前面,声明这个类的部分方法可以被发布为 Web 服务。其中serviceName: 对外发布的服务名,指定 Web Service 的服务名称:wsdl:service。缺省值为 Java 类的简单名称 + Service。targetNamespace:指定你想要的名称空间,认是使用接口实现类的包名的反缀
@WebMethod 用来修饰实现类中的方法,最常用的功能是不暴露一个方法(@WebMethod(exclude=true))。如果不使用@WebMethod修饰,默认情况下,ejb容器会把所有方法都暴露成web service
@WebParam
注释用于定制从单个参数至 Web Service 消息部件和 XML 元素的映射。
发布服务有两种方式,一种是编程实现,即执行

import javax.xml.ws.Endpoint;
import com.mkyong.ws.HelloWorldImpl;

//Endpoint publisher
public class ServicePublisher{

    public static void main(String[] args) {
       Endpoint.publish("http://localhost:9100/WebserviceTestImpl", new WebserviceTestImpl());
    }

}

现在很多应用服务器进行配置即可代替编程执行,
另一种方式是将其作为ejb发布,也就是将ejb暴露为Webservice。这种方法不用额外的代码,只需按照ejb规则将该Webservice配置好即可,ejb类加上注释@WebService,应用服务器会自动将其发布为一个web服务。这里用的是weblogic,我将这两个类打成jar包放到weblogic上,并修改ejb-jar.xml添加该ejb,部署启动后打开控制台可看到web服务部署成功:
这里写图片描述
ejb-jar.xml文件添加内容如下:

<session>
            <ejb-name>MyserviceEJB</ejb-name>
            <business-remote>com.css.sword.webservice.WebserviceTest</business-remote>
            <ejb-class>com.css.sword.webservice.WebserviceTestImpl</ejb-class>
            <session-type>Stateless</session-type>
            <transaction-type>Bean</transaction-type>
        </session>

打开浏览器,输入http://localhost:9100/WebserviceTestImpl?WSDL看到如下页面,即说明Webservice发布成功。
这里写图片描述
三、客户端
客户端开发有很多种方法,这里介绍三种最原始的方法。
1、jdk自带生成客户端

URL wsdlUrl = new URL("http://localhost:9100/WebserviceTestImpl?WSDL");
        QName qName = new QName("http://webservice.sword.css.com/","WebserviceTestImplService");
        Service s = Service.create(wsdlUrl, qName);
        WebserviceTest hs = s.getPort(new QName("http://webservice.sword.css.com/","WebserviceTestImplPort"), WebserviceTest.class);
        String ret = hs.sayHello("你好");

2、Eclipse生成Webservice客户端
由于Eclipse各个版本都不一样,有的还需要安装插件才可生成,这样就不演示了,按照步骤会生成以下几个文件
这里写图片描述
客户端代码如下:

    WebserviceTestProxy test = new WebserviceTestProxy();
    WebserviceTest web = test.getWebserviceTest();
    String jj=web.sayHello();
    System.out.println(jj);

3、wsimport生成客户端
wsimport是jdk自带的命令,使用起来也很方便,首先定位到你想生成文件的地方(这里为d:tmp),键入命令:
wsimport -keep http://localhost:9100/WebserviceTestImpl?WSDL
会看到如下结果:
这里写图片描述
这说明已经编译成功,此时到tmp文件夹下可以看到生成如下文件:
这里写图片描述
将所有java文件复制到你建的工程里,然后编写客户端代码:

WebserviceTestImplService test = new WebserviceTestImplService();
        WebserviceTest webservice = (WebserviceTest) test.getWebserviceTestImplPort();
        webservice.sayHello("hello");
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值