由WSDL文件创建WebService服务

        在WebService服务对接中,经常遇到这样的情况,对方服务的wsdl文件以及接口文档已经拿到,但由于这样或那样的原因导致网络一直不通,并且由于项目比较急,为方便边开发边调试,一般解决方法是在己方测试环境部署一个对方的模拟服务。

现有WSDL文件如下:



	
		
		
			
			
			
			
			
				
					
					
				
			
			
			
				
					
				
			
			
		
	
	
	
		
	
	
	
		
	
	
	
		
			
			
		
	
	
	
		
		
			
			
				
			
			
				
			
		
	
	
	
		
			
		
	
	

以下已SpringBoot项目为例,一般有两种方法:

一:通过配置DefaultWsdl11Definition实现

1:配置Maven pom文件


	4.0.0
	com.lzg.test.ws
	SpringBootWSDemo
	0.0.1-SNAPSHOT
	war

	
		UTF-8
		1.8
	

	
		org.springframework.boot
		spring-boot-starter-parent
		1.5.7.RELEASE
		
	

	
		
			org.springframework.boot
			spring-boot-starter-web
			
			
				
					org.springframework.boot
					spring-boot-starter-tomcat
				
			
		
		
		
			org.springframework.boot
			spring-boot-starter-tomcat
			provided
		

		
		
			org.springframework.boot
			spring-boot-starter-web-services
		

		
		
			wsdl4j
			wsdl4j
		
		
			jaxen
			jaxen
		
		
			org.jdom
			jdom2
		


	

	
		
			
				org.apache.maven.plugins
				maven-war-plugin
				
					ws
				
			
		
	

2:由WSDL文件写出其定义XSD文件



	
		
			
				
				
			
		
	

	
		
			
				
			
		
	

3:有XSD文件生成实体

右击XSD文件,依次如图:
由WSDL文件创建WebService服务_第1张图片
选择生成实体类的包:
由WSDL文件创建WebService服务_第2张图片

单击Yes:

由WSDL文件创建WebService服务_第3张图片

查看,生成成功:

由WSDL文件创建WebService服务_第4张图片

4:编写配置文件

配置WebServiceConfig让其继承WsConfigurerAdapter,依次配置消息分发Servlet MessageDispatcherServlet,默认WSDL定义类DefaultWsdl11Definition,加载XSD文件的Bean。

5:测试文件

编写模拟服务的接收消息后的处理逻辑LzgRepository。

6: Endpoint文件

编写WebService服务的调用入口LzgEndpoint。

7:SpringBoot启动文件

配置application.properties和Application.java

8:比对WSDL文件

启动服务,在浏览器输入:http://localhost:8008/lzg/soap/testWebService.wsdl

查看文件和原WSDL文件比对:

由WSDL文件创建WebService服务_第5张图片

发现丢失


		
	
wsdl:portType和wsdl:binding节点也不一致。

9:测试

通过Postman调用:

URL:http://localhost:8008/lzg/soap/testWebService

参数:raw xml(text/xml)

请求报文:


   
   
      
        111111122222222222
      
   

结果:

由WSDL文件创建WebService服务_第6张图片

测试可以通过。

二:通过配置SimpleWsdl11Definition实现

1:编写配置

把上边第4步中的配置的默认WSDL定义类DefaultWsdl11Definition的Bean和加载XSD文件的Bean的代码注释掉,重写一个SimpleWsdl11Definition Bean,在其内直接加载WSDL文件。

2:启动服务,比对WSDL文件

发现WSDL完全一致。

3:测试

由WSDL文件创建WebService服务_第7张图片

测试可以通过。


源码下载

你可能感兴趣的:(Java相关)