java 如何实现webservice 怎么调用接口

 我来答
小熙ps
2016-03-14 · 知道合伙人软件行家
小熙ps
知道合伙人软件行家
采纳数:966 获赞数:9282
毕业于湖南信息职业技术学院,专业计算机网络技术,在IT领域已经专注3年,对各种IT行业都有所了解 。

向TA提问 私信TA
展开全部

  一、利用jdk web服务api实现,这里使用基于SOAP message的Web服务 

 ①.首先建立一个Web services EndPoint:package Hello;
 import javax.jws.WebService;
 import javax.jws.WebMethod;
 import javax.xml.ws.Endpoint;
  @WebService
 public class Hello {
  @WebMethod
 public String hello(String name) {
 return "Hello, " + name + "\n";
 }
  public static void main(String[] args) {
  // create and publish an endpoint
  Hello hello = new Hello();
Endpoint endpoint = Endpoint.publish("


, hello);
 }
 }
 ②.使用apt编译Hello.java(例:apt -d [存放编译后的文件目录] Hello.java ) ,
会生成jaws目录
 ③.使用java Hello.Hello运行,然后将浏览器指向


就会出现下列显示
 ④.使用wsimport生成客户端使用如下:
  wsimport -p . -keep 


这时,会在当前目录中生成如下文件:
 ⑤.客户端程序:
1 class HelloClient{
2 public static void main(String args[]) {
3 HelloService service = new HelloService();
4 Hello helloProxy = service.getHelloPort();
5 String hello = helloProxy.hello("你好");
6 System.out.println(hello);
7 }
8 }

以上方法还稍显繁琐,还有更加简单的方法


  二、使用xfire,我这里使用的是myeclipse集成的xfire进行测试的利用xfire开发WebService,可以有三种方法:

   1. 一种是从javabean中生成;

 2. 一种是从wsdl文件中生成;

   3. 还有一种是自己建立webservice

  步骤如下:

  用myeclipse建立webservice工程,目录结构如下:首先建立webservice接口,

代码如下:

    1 package com.myeclipse.wsExample;
  2 //Generated by MyEclipse
  3
  4 public interface IHelloWorldService {
  5
    6 public String example(String message);
  7
  8 }
接着实现这个借口:
    1 package com.myeclipse.wsExample;
  2 //Generated by MyEclipse
  3
  4 public class HelloWorldServiceImpl implements IHelloWorldService {
  5
  6 public String example(String message) {
  7 return message;
  8 }
  9
  10 }


 

  修改 service.xml文件,加入以下代码:

  1 <service>
  2 <name>HelloWorldService</name>
  3 <serviceClass>
  4 com.myeclipse.wsExample.IHelloWorldService
  5 </serviceClass>
  6 <implementationClass>
  7 com.myeclipse.wsExample.HelloWorldServiceImpl
  8 </implementationClass>
  9 < style>wrapped</style>
  10 <use>literal</use>
  11 <scope>application</scope>
  12  </service>


把整个项目部署到tomcat服务器中打开浏览器,输入http://localhost:8989/HelloWorld/services/HelloWorldService?wsdl,可以看到如下:

然后再展开HelloWorldService后面的wsdl可以看到:

 客户端实现如下:

   1 package com.myeclipse.wsExample.client;
  2
  3 import java.net.MalformedURLException;
  4 import java.net.URL;
  5
  6 import org.codehaus.xfire.XFireFactory;
  7 import org.codehaus.xfire.client.Client;
  8 import org.codehaus.xfire.client.XFireProxyFactory;
  9 import org.codehaus.xfire.service.Service;
   10 import org.codehaus.xfire.service.binding.ObjectServiceFactory;
  11
  12 import com.myeclipse.wsExample.IHelloWorldService;
  13
  14 public class HelloWorldClient {
  15 public static void main(String[] args) throws MalformedURLException, Exception {
  16 // TODO Auto-generated method stub
  17 Service s=new ObjectServiceFactory().create(IHelloWorldService.class);
  18 XFireProxyFactory xf=new XFireProxyFactory(XFireFactory.newInstance().getXFire());
  19 String url="

  20
  21 try
  22 {
  23
    24 IHelloWorldService hs=(IHelloWorldService) xf.create(s,url);
  25 String st=hs.example("zhangjin");  
  26 System.out.print(st);
  27 }  
  28 catch(Exception e)
  29 {
  30 e.printStackTrace();
  31 }
  32 }
  33
  34 }

    有时候我们知道一个wsdl地址,比如想用java客户端引用net做得webservice,使用myeclipse引用,但是却出现无法通过验证的错误,这时我们可以直接在类中引用,步骤如下:

1. public static void main(String[] args) throws MalformedURLException, Exception {
2. // TODO Auto-generated method stub


  

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式