wsdl2java -wsdlLocation生成相对路径

原创 2016年08月30日 01:15:39

一、前言

之前写过用cxf框架中的wsdl2java 根据WSDL文档生成webservice客户端代码

贴中将的这种方式会出现服务器地址是写入代码中的问题。这样对后期的维护是一定的问题。

接下来我们就解决这个问题。方法也很简单。

二、方式

1.配置WSDL文档到本地环境中。

如我的开发环境是使用的MAVEN构建的,所有在resources目录下创建文件夹wsdl

文件夹中保存我们的WSDL文档

wsdl/test.wsdl

这样,在项目环境中的路径就是classpath:wsdl/test.wsdl


2.生成相对路径的代码。

还是使用wsdl2java  这次加入-wsdlLocation 这个参数。

wsdl2java -encoding utf-8 -p com.jeiao.boss -impl -wsdlLocation classpath:wsdl/test.wsdl  http://127.0.0.1:9999/boss/test?wsdl


这样,我们生成的客户端依赖的地址就不是绝对路径,而是resources中的wsdl文档。

代码中如下:



达到目的。

三、进阶

实现在测试webservice和实际webservice环境中随意切换。

其实我们使用wsdl文档到本地参数时。可以观察到webservice的服务器地址已经固化到文件中。

<wsdl:service name="TestService">
    <wsdl:port name="TestServiceHttpPort" binding="tns:TestServiceHttpBinding">
        <wsdlsoap:address location="http://192.168.1.100/boss/TestService"/>
    </wsdl:port>
</wsdl:service>

要实现环境的随意切换,可以使用Maven的Profile ,这个在 Maven 使用profiles filters resources build 打包不同配置开发环境及打包中讲到。

<wsdl:service name="TestService">
    <wsdl:port name="TestServiceHttpPort" binding="tns:TestServiceHttpBinding">
        <wsdlsoap:address location="${env.config.boss.host}/boss/TestService"/>
    </wsdl:port>
</wsdl:service>

配置好此Profile就可以在不同环境中使用了。


另:在cxf和stackoverflow上推荐使用 cxf的maven 插件。我测试过不管用,生成不了。

具体代码如下,有兴趣的同学可以试试,顺便指出我哪出错了。问题地址:http://stackoverflow.com/questions/4455195/how-to-avoid-the-need-to-specify-the-wsdl-location-in-a-cxf-or-jax-ws-generated/39097272#39097272

			<plugin>
				<groupId>org.apache.cxf</groupId>
				<artifactId>cxf-codegen-plugin</artifactId>
				<version>3.0.10</version>
				<executions>
					<execution>
						<id>generate-sources</id>
						<phase>generate-sources</phase>
						<configuration>
							<sourceRoot>${project.build.directory}/generated-sources/cxf</sourceRoot>
							<wsdlOptions>
								<wsdlOption>
									<wsdl>${basedir}/src/main/resources/wsdl/InfoQueryService.wsdl</wsdl>
									<wsdlLocation>classpath:wsdl/InfoQueryService.wsdl</wsdlLocation>
								</wsdlOption>
							</wsdlOptions>
						</configuration>
						<goals>
							<goal>wsdl2java</goal>
						</goals>
					</execution>
				</executions>
			</plugin>

jeiao!



版权声明:本文为博主原创文章,未经博主允许不得转载。转载请注明来源:http://blog.csdn.net/mingjie1212。欢迎交流学习!

java如何实现webservice中wsdlLocation访问地址的可配置化

背景:项目中调用了别的系统的webservice接口,调用成功之后发现wsdlLocation的地址是写死的,不方便修改,所以需要实现地址,包括用户名密码的可配置。项目的框架是Spring,调用web...
  • u012000209
  • u012000209
  • 2017年02月15日 14:56
  • 3659

webservice相对路径

添加引用 System.Web;1.Context.Server.MapPath("/") 应用程序根目录所在的位置 如 C:\Inetpub\wwwroot\2.Context.Server.Map...
  • huohe2009
  • huohe2009
  • 2014年02月27日 11:04
  • 1437

WebService 之 WSDL文件 讲解

WSDL (Web Services Description Language,Web服务描述语言)是一种XML Application,他将Web服务描述定义为一组服务访问点,客户端可以通过这些服务...
  • u012874998
  • u012874998
  • 2014年06月24日 22:44
  • 2641

WebService中的WSDL详细解析

WebService中的WSDL详解        有人在WebService开发的时候,特别是和第三方有接口的时候,走的是SOAP协议,然后用户(或后台)给你一个WSDL文件(或网址),说按照...
  • qq_19714937
  • qq_19714937
  • 2017年03月31日 10:12
  • 4725

CXF学习之旅(三) - 使用Maven根据WSDL生成生成Java代码

好久没有看CXF了,最近又一次用到,在这里根据日常使用,接着整理。 好吧,先复习一下,怎样使用Maven创建一个CXF的项目。 1.根据之前的博客,新建一个Web项目 2.修改pom.xml ...
  • jolingogo
  • jolingogo
  • 2013年08月07日 00:09
  • 3825

使用Maven的jaxws-maven-plugin插件,将wsdl生成java

1、准备一个标准的maven工程,将pom.xml修改成如下:
  • fenglibing
  • fenglibing
  • 2013年08月01日 12:06
  • 7716

WSDL2Java--根据wsdl生成Java客户端工具

  • 2011年12月27日 16:33
  • 4.14MB
  • 下载

构建基于CXF的WebService服务(2)-- 利用CXF提供的wsdl2java工具创建客户端

wsdl2java工具的使用及客户端端调用
  • jaune161
  • jaune161
  • 2014年05月12日 09:40
  • 29576

wsdl2java(Eclipse插件及使用方法)

  • 2012年09月18日 00:47
  • 9.67MB
  • 下载

利用wsdl2java生成本地WebService客户端

利用wsdl2java生成本地WebService客户端 在网上可以找到wsdl地址;如天气预报,手机号码所属地,交通查询等 第一步:打开wsdl网页,右击鼠标--->网页保存为---->保存为...
  • fengshengsiye
  • fengshengsiye
  • 2017年05月08日 15:07
  • 1146
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:wsdl2java -wsdlLocation生成相对路径
举报原因:
原因补充:

(最多只允许输入30个字)