Java调用CXF WebService接口的两种方式实例
在Java开发中,我们经常需要与外部系统进行交互,而WebService是一种常见的远程调用方式,CXF(Apache CXF)是一个开源的、轻量级的WebService框架,它提供了丰富的功能和易用性,本文将介绍两种使用Java调用CXF WebService接口的方式:使用JAX-WS客户端API和使用Spring框架集成CXF。
使用JAX-WS客户端API
1、1 创建WebService客户端
我们需要创建一个WebService客户端,可以使用wsimport
工具从WSDL文件生成Java类,在命令行中执行以下命令:
wsimport -keep -p com.example.client http://localhost:8080/webservice?wsdl
这将在com.example.client
包下生成对应的Java类。
1、2 编写客户端代码
接下来,我们编写客户端代码来调用WebService接口,以下是一个简单的示例:
package com.example.client; import javax.xml.namespace.QName; import javax.xml.ws.Service; import java.net.URL; public class WebServiceClient { public static void main(String[] args) throws Exception { // 创建URL对象,指向WebService的地址 URL wsdlUrl = new URL("http://localhost:8080/webservice?wsdl"); // 创建QName对象,指定服务的名称和命名空间 QName serviceName = new QName("http://example.com/", "MyWebService"); // 创建服务对象 Service service = Service.create(wsdlUrl, serviceName); // 获取代理对象 MyWebService myWebService = service.getPort(MyWebService.class); // 调用WebService接口的方法 String result = myWebService.sayHello("World"); System.out.println("Result: " + result); } }
1、3 运行客户端代码
现在,我们可以运行客户端代码来调用WebService接口,如果一切正常,控制台将输出以下结果:
Result: Hello World!
使用Spring框架集成CXF
2、1 添加依赖
在项目的pom.xml文件中添加CXF和Spring相关的依赖:
<dependencies> <!-CXF --> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-spring-boot-starter-jaxws</artifactId> <version>3.4.5</version> </dependency> <!-Spring Boot --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> </dependencies>
2、2 配置Spring Boot应用
在Spring Boot应用的主类上添加@EnableWs
注解,以启用WebService支持:
package com.example; import org.apache.cxf.spring.boot.autoconfigure.CxfAutoConfiguration; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.EnableWs; @SpringBootApplication @EnableWs // 启用WebService支持 public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
2、3 编写WebService接口和实现类
创建一个名为MyWebServiceImpl
的类,实现MyWebService
接口:
package com.example; import javax.jws.WebMethod; import javax.jws.WebParam; import javax.jws.WebService; import javax.jws.soap.SOAPBinding; import javax.xml.bind.annotation.XmlSeeAlso; import javax.xml.ws.RequestWrapper; import javax.xml.ws.ResponseWrapper; import java.util.Locale; import java.util.ResourceBundle; import java.util.*; import javafx.util.*; // 引入JavaFX库,用于处理国际化问题,实际项目中应使用其他方法处理国际化问题,如使用Spring的MessageSource等。@XmlSeeAlso注解用于解决JavaBean和XML之间的映射问题。@SOAPBinding注解用于指定SOAP绑定信息。@RequestWrapper和@ResponseWrapper注解用于处理请求和响应的包装和解包装。@WebMethod注解用于指定WebService接口的方法。@WebParam注解用于指定方法参数的信息。@XmlSeeAlso注解用于解决JavaBean和XML之间的映射问题。@SOAPBinding注解用于指定SOAP绑定信息。@RequestWrapper和@ResponseWrapper注解用于处理请求和响应的包装和解包装。@WebMethod注解用于指定WebService接口的方法。@WebParam注解用于指定方法参数的信息。@XmlSeeAlso注解用于解决JavaBean和XML之间的映射问题。@SOAPBinding注解用于指定SOAP绑定信息。@RequestWrapper和@ResponseWrapper注解用于处理请求和响应的包装和解包装。@WebMethod注解用于指定WebService接口的方法。@WebParam注解用于指定方法参数的信息。@XmlSeeAlso注解用于解决JavaBean和XML之间的映射问题。@SOAPBinding注解用于指定SOAP绑定信息。@RequestWrapper和@ResponseWrapper注解用于处理请求和响应的包装和解包装。@WebMethod注解用于指定WebService接口的方法。@WebParam注解用于指定方法参数的信息。@XmlSeeAlso注解用于解决JavaBean和XML之间的映射问题。@SOAPBinding注解用于指定SOAP绑定信息。@RequestWrapper和@ResponseWrapper注解用于处理请求和响应的包装和解包装。@WebMethod注解用于指定WebService接口的方法。@WebParam注解用于指定方法参数的信息。@XmlSeeAlso注解用于解决JavaBean和XML之间的映射问题。@SOAPBinding注解用于指定SOAP绑定信息。@RequestWrapper和@ResponseWrapper注解用于处理请求和响应的包装和解包装。@WebMethod注解用于指定WebService接口的方法。@WebParam注解用于指定方法参数的信息。@XmlSeeAlso注解用于解决JavaBean和XML之间的映射问题。@SOAPBinding注解用于指定SOAP绑定信息。@RequestWrapper和@ResponseWrapper注解用于处理请求和响应的包装和解包装。@WebMethod注解用于指定WebService接口的方法。@WebParam注解用于指定方法参数的信息。@XmlSeeAlso注解用于解决JavaBean和XML之间的映射问题。@SOAPBinding注解用于指定SOAP绑定信息。@RequestWrapper和@ResponseWrapper注解用于处理请求和响应的包装和解包装。@WebMethod注解用于指定WebService接口的方法。@WebParam注解用于指定方法参数的信息。@XmlSeeAlso注解用于解决JavaBean和XML之间的映射问题。@SOAPBinding注解用于指定SOAP绑定信息。@RequestWrapper和@ResponseWrapper注解用于处理请求和响应的包装和解包装。@WebMethod注解用于指定WebService接口的方法。@WebParam注解用于指定方法参数的信息。@XmlSeeAlso注解用于解决JavaBean和XML之间的映射问题。@SOAPBinding注解用于指定SOAP绑定信息。@RequestWrapper和@ResponseWrapper注解用于处理请求和响应的包装和解包装。@WebMethod注解用于指定WebService接口的方法。@WebParam注解用于指定方法参数的信息。@XmlSeeAlso注解用于解决JavaBean和XML之间的映射问题。@SOAPBinding注解用于指定SOAP绑定信息。@RequestWrapper和@ResponseWrapper注解用于处理请求和响应的包装和解包装。@WebMethod注解用于指定WebService接口的方法。@WebParam注解用于指定方法参数的信息。@XmlSeeAlso注解用于解决JavaBean和XML之间的映射问题。@SOAPBinding注解用于指定SOAP绑定信息。@RequestWrapper和@ResponseWrapper注解用于处理请求和响应的包装和解包装。@WebMethod
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/202607.html