JAVA技术编写、解析WebService服务 您所在的位置:网站首页 java解析webservice接口返回的xml JAVA技术编写、解析WebService服务

JAVA技术编写、解析WebService服务

2023-11-09 03:20| 来源: 网络整理| 查看: 265

WebService简介

WebService是一个SOA(面向服务的编程)的架构,它是不依赖于语言,不依赖于平台,可以实现不同的语言间的相互调用,通过Internet进行基于Http协议的网络应用间的交互。 其实WebService并不是什么神秘的东西,它就是一个可以远程调用的类,或者说是组件,把你本地的功能开放出去供别人调用。

为什么使用WebService?

简单解释一下WebService,比如你的项目需要查询第三方项目的数据。你能直接查吗,肯定不行,因为数据库是第三方的,他不可能给你权限。你想访问他的数据库获取数据,这就需要用到WebService。通过调用第三方暴露的接口来得到你想要的数据。

适用场景: 

软件的集成和复用,如气象局(服务端系统)、天气查询网站等。

发布一个服务(对内/对外),不考虑客户端类型,不考虑性能,建议WebService服务端已经确定使用webservice,客户端不能选择,必须使用WebService 不适用场景: 考虑性能时不建议使用WebService同架构程序下不建议使用WebService Axis2与CXF的区别

目前java开发WebService的框架主要包括Axis2和CXF,如果你需要多语言的支持,你应该选择Axis2。如果你需要把你的实现侧重java并希望和Spring集成,CXF就是更好的选择,特别是把你的WebService嵌入其他的程序中。

先呈上完整项目代码 WebService服务端 WebService客户端 编写WebService服务端 SpringBoot使用CXF集成WebService 1.向pom.xml中添加集成WebService的相关依赖 org.springframework.boot spring-boot-starter-web-services org.apache.cxf cxf-rt-frontend-jaxws 3.3.3 org.apache.cxf cxf-rt-transports-http 3.1.6 2.创建服务端接口 package com.example.demo.service; import javax.jws.WebService; @WebService(name = "demoService",// 暴露服务名称 targetNamespace = "http://demo.example.com"// 命名空间,一般是接口的包名倒序 ) public interface DemoService { String sayHello(String name); } 3.创建服务端接口实现类 package com.example.demo.impl; import javax.jws.WebService; import com.example.demo.service.DemoService; @WebService(serviceName = "demoService", // 与接口中指定的name一致 targetNamespace = "http://demo.example.com", // 与接口中的命名空间一致,一般是接口的包名倒 endpointInterface = "com.example.demo.service.DemoService"// 接口地址 ) public class DemoServiceImpl implements DemoService { @Override public String sayHello(String name) { String said = name + ",Hello~~"; System.out.println(said); return said; } } 4.创建CXF配置类 package com.example.demo.config; import com.example.demo.service.DemoService; import com.example.demo.impl.DemoServiceImpl; import org.apache.cxf.Bus; import org.apache.cxf.bus.spring.SpringBus; import org.apache.cxf.jaxws.EndpointImpl; import org.apache.cxf.transport.servlet.CXFServlet; import org.springframework.boot.web.servlet.ServletRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import javax.xml.ws.Endpoint; @Configuration public class CxfConfig { @Bean public ServletRegistrationBean dispatcherServletDemo() { return new ServletRegistrationBean(new CXFServlet(), "/demo/*"); } @Bean(name = Bus.DEFAULT_BUS_ID) public SpringBus springBus() { return new SpringBus(); } @Bean public DemoService demoService() { return new DemoServiceImpl(); } @Bean public Endpoint endpoint() { EndpointImpl endpoint = new EndpointImpl(springBus(), demoService()); endpoint.publish("/api"); return endpoint; } } 5.启动SpringBoot服务

输入http://localhost:8080/demo/api?wsdl即可。

编写WebService客户端

1、在idea中进入File > New Project…菜单打开新建项目窗口,依次选择Java、WebServices,Version项选择Apache Axis,Libraries项选择 Download。然后点击Next按钮进入下一页。

2、在下一页中输入项目名称,然后点击Finish按钮开始下载依赖包。依赖包下载完成后进入新建的项目。

3、选WebServices > Generate Wsdl From Java Code,生成wsdl

4、然后选择服务地址

5、确定之后,创建一个测试类,代码如下:

package test; public class demo { public static void main(String[] args) { try{ DemoService_ServiceLocator webServiceImpl = new DemoService_ServiceLocator(); String result = webServiceImpl.getDemoServiceImplPort().sayHello("WebService测试!"); System.out.println(result); }catch (Exception e){ e.printStackTrace(); } } }

6、查看运行结果

注意:WebService解析方法有两种,上面从IDEA中解析是一种。还有一种是借助wsimport命令工具自动生成客户端代码。

命令是:wsimport -s D:\zrz_project\src\main\java\com\zrz\create -p com http://localhost:8080/demo/api?wsdl

感兴趣的同学可以自行验证一下,第二种方法我在其他项目中验证过,可行。

借助wsimport命令工具自动生成客户端代码



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有