java 实现WebService 以及不同的调用方式

Web Service是一种分布式应用程序的模型,是一组可互相调用的方法集,有独立的数据协定和传输协定。Web Service是使用HTTP等协议在Web上进行数据交换的重要手段之一。Java可以通过JAXWS(Java API for XML Web Services)API来实现Web Service。本文将介绍Java如何实现Web Service和不同的调用方式。

1. Java实现Web Service

实现Web Service的步骤如下:

1.1 编写接口

先定义一个接口,该接口中定义了需要暴露的Web Service的方法。

```java

package com.example.webservice;

import javax.jws.WebMethod;

import javax.jws.WebParam;

import javax.jws.WebService;

@WebService

public interface HelloService {

@WebMethod

String sayHello(@WebParam(name = "name") String name);

}

```

1.2 实现接口

接着,实现上一步中定义的接口。

```java

package com.example.webservice;

import javax.jws.WebMethod;

import javax.jws.WebParam;

import javax.jws.WebService;

@WebService(endpointInterface = "com.example.webservice.HelloService")

public class HelloServiceImpl implements HelloService {

@Override

@WebMethod

public String sayHello(@WebParam(name = "name") String name) {

return "Hello, " + name + "!";

}

}

```

1.3 发布服务

使用JAXWS API中的Endpoint类来发布服务,它的publish()方法可以将一个Java对象暴露成Web Service:

```java

package com.example.webservice;

import javax.xml.ws.Endpoint;

public class Server {

public static void main(String[] args) {

Endpoint.publish("http://localhost:8080/hello", new HelloServiceImpl());

System.out.println("Service started!");

}

}

```

2. 不同的调用方式

2.1 使用JAXWS API调用

JAXWS API提供了可以调用Web Service的客户端API。首先,使用JAXWS的wsimport工具生成Web Service的客户端代码:

```bash

wsimport -s src http://localhost:8080/hello?wsdl

```

该命令执行后会在src目录下生成客户端代码。接着,编写客户端代码:

```java

package com.example.client;

import com.example.webservice.HelloService;

import javax.xml.namespace.QName;

import javax.xml.ws.Service;

import java.net.URL;

public class Client {

public static void main(String[] args) throws Exception {

URL wsdlUrl = new URL("http://localhost:8080/hello?wsdl");

QName serviceName = new QName("http://webservice.example.com/", "HelloServiceImplService");

QName portName = new QName("http://webservice.example.com/", "HelloServiceImplPort");

Service service = Service.create(wsdlUrl, serviceName);

HelloService helloService = service.getPort(portName, HelloService.class);

System.out.println(helloService.sayHello("world"));

}

}

```

2.2 使用Apache CXF调用

Apache CXF是开源的Web Service框架,使用CXF可以比较容易地开发和调用Web Service。首先,需要添加CXF的依赖:

```xml

org.apache.cxf

cxf-rt-frontend-jaxws

3.3.6

```

接着,编写客户端代码:

```java

package com.example.client;

import com.example.webservice.HelloService;

import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;

public class Client {

public static void main(String[] args) {

String endpoint = "http://localhost:8080/hello";

JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();

factory.setServiceClass(HelloService.class);

factory.setAddress(endpoint);

HelloService helloService = (HelloService) factory.create();

System.out.println(helloService.sayHello("world"));

}

}

```

2.3 使用Apache Axis2调用

Apache Axis2是一个基于SOAP的Web Service框架,可以用来实现和调用Web Service。首先,需要添加Axis2的依赖:

```xml

org.apache.axis2

axis2-kernel

1.7.9

org.apache.axis2

axis2-transport-http

1.7.9

org.apache.axis2

axis2-jaxws

1.7.9

```

接着,编写客户端代码:

```java

package com.example.client;

import com.example.webservice.HelloServiceStub;

public class Client {

public static void main(String[] args) throws Exception {

String endpoint = "http://localhost:8080/hello";

HelloServiceStub stub = new HelloServiceStub(endpoint);

HelloServiceStub.SayHello request = new HelloServiceStub.SayHello();

request.setName("world");

System.out.println(stub.sayHello(request).get_return());

}

}

```

3. 结束语

本文介绍了Java如何实现Web Service和不同的调用方式,包括使用JAXWS API、Apache CXF和Apache Axis2。使用Web Service可以方便地进行分布式应用程序的开发,值得开发者们掌握。 如果你喜欢我们三七知识分享网站的文章, 欢迎您分享或收藏知识分享网站文章 欢迎您到我们的网站逛逛喔!https://www.37seo.cn/

点赞(112) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部