当我将 jaxws-tools 升级到 3.0.0 时,我的 wsimport Gradle 任务开始因 ClassNotFoundException 崩溃。
我有一个使用 Springinitializr 创建的简单 Gradle 项目。我其中有一个 wsimport 任务,是我根据 gradle wsimport问题以及其他来源创建的。build.gradle 如下所示
plugins {
id 'org.springframework.boot' version '2.4.2'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
configurations {
jaxws
}
task wsimport {
description = 'Generate classes from wsdl using wsimport'
def wsdlFile = file("${projectDir}/src/main/resources/soap/wsdl/hello.wsdl")
ext.classesDir = "${buildDir}/classes/generated"
doLast {
ant {
mkdir(dir: classesDir)
taskdef(name: 'wsimport',
classname: 'com.sun.tools.ws.ant.WsImport',
classpath: configurations.jaxws.asPath
)
wsimport(
destdir: …Run Code Online (Sandbox Code Playgroud) 我正在尝试为http://v3.core.com.productserve.com/ProductServeService.wsdl定义的Web服务生成Java客户端
我已经从CXF和Axis2尝试过Java的wsimport和wsdl2java。
例如
wsimport -p productserve -XadditionalHeaders http://v3.core.com.productserve.com/ProductServeService.wsdl
Run Code Online (Sandbox Code Playgroud)
这三个都产生具有相同问题的ApiPortType.java。getProductList方法的返回类型为void,没有@WebResult批注。WSDL中的所有其他操作都映射为java代码。
我已经详细研究了WSDL,但无法发现问题所在以及为什么所有3种工具都无法为操作生成正确的返回类型。
有任何想法吗?
最近,我花了几个小时试图让WSImport处理通过HTTPS托管的Web服务,使用伪证书(开发部署).
我试过用wsimport.exeJava 8 jdk的windows版本.
我指定了选项-XdisableSSLHostnameVerification,但它一直在抱怨错误的证书.这是事实,证书无效,但在开发环境中,它应该是可以接受的.
我没有找到简单的方法让wsimport跳过证书检查.
由于wsimport自 JDK11 以来不再包含(在哪里下载以及如何安装 JAX-WS wsimport 工具?),我想我需要安装metro-jax-ws;但是,没有关于如何执行此操作的说明......
我想知道为什么生成(来自xsd)列表的getter始终为null检查:
public class Response {
@XmlElement(type = Integer.class)
protected List<Integer> integers;
public List<Integer> getIntegers() {
if (integers == null) {
integers = new ArrayList<Integer>();
}
return this.integers;
}
}
Run Code Online (Sandbox Code Playgroud)
题:
为什么?是什么原因?有什么好的吗?
我问在某些情况下,这不是一件好事.看起来没有办法改变这种行为.