1

我目前正在尝试建立一个基于某些 WSDL 文件生成一些 Java 代码的 maven 项目。

不幸的是,我遇到了一些问题,因为我的测试环境没有有效的 SSL 证书(我已经使用 chrome 确认了这一点)。因为这是在测试环境中发生的,所以我不关心安全性。我只想让我的代码生成工作。

下面展示了我目前如何使用插件 cxf-codegen-plugin

        <plugin>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-codegen-plugin</artifactId>
            <version>3.1.8</version>
            <executions>
                <execution>
                    <id>generate-sources</id>
                    <phase>generate-sources</phase>
                    <configuration>
                        <sourceRoot>${project.build.directory}/generated/cxf</sourceRoot>
                        <defaultOptions>
                            <bindingFiles>
                                <bindingFile>${basedir}/src/main/jaxb/jaxb.bindings.xml</bindingFile>
                            </bindingFiles>
                            <packagenames>
                                <packagename>foo.bar</packagename>
                            </packagenames>
                            <extraargs>  
                                <extraarg>-client</extraarg>
                            </extraargs>  

                        </defaultOptions>
                        <wsdlOptions>
                            <wsdlOption>
                                <wsdl>[Removed URL]</wsdl>
                            </wsdlOption>

                        </wsdlOptions>
                    </configuration>
                    <goals>
                        <goal>wsdl2java</goal>
                    </goals>
                </execution>
                </executions>
        </plugin>

当我运行 mvn clean install maven 输出以下错误

[错误] 无法在项目 TestClient 上执行目标 org.apache.cxf:cxf-codegen-plugin:3.1.8:wsdl2java (generate-sources):执行目标 org.apache.cxf:cxf-codegen-plugin 的生成源:3.1.8:wsdl2java 失败:org.apache.cxf.wsdl11.WSDLRuntimeException:无法创建 wsdl 定义 [已删除 URL] WSDLException:faultCode=PARSER_ERROR:解析问题 [已删除 URL]。:javax.net.ssl.SSLHandshakeException:java .security.cert.CertificateException:没有主题替代 DNS 名称匹配 .... 找到。-> [帮助 1]

所以我的问题基本上是是否有某种方法来配置 cxf-codegen-plugin st 它只是忽略所有安全问题并继续生成 Java 代码?

4

1 回答 1

0

不知道是否可以忽略,但您可以将证书添加到本地证书存储区,这似乎也可以解决您的问题。

在不了解有关您的开发环境的任何进一步详细信息的情况下,这些说明可能会直接适用,或者至少稍作修改即可适用。

我从 Ishwara Varnasi 的这篇博文中找到了帮助:

http://ibswings.blogspot.fi/2008/12/running-axis-wsdl2java-on-https-wsdl.html

很快的步骤:

  1. 将证书下载到%JAVA_HOME% /jre/lib/security 。目录可能会有所不同,但应该有 java jre cacert 证书存储。
  2. 将下载的证书导入同一目录下的 cacerts 文件。在导入之前制作原始 cacerts 文件的备份副本是个好主意。

更详细的步骤:

  1. 可以通过浏览器获取证书,方法是确认安全异常并永久存储证书,然后将其从浏览器导出到所需目录。以 X.509 格式导出应该可以正常工作,不知道其他格式。也可以使用 openssl等工具下载证书,请参阅Using openssl to get the certificate from a server
  2. 使用适当的工具导入证书,例如:

    keytool -importcert -trustcacerts -keystore cacerts -storepass changeit -alias aliasname -file cert_to_import_file_name

    有关导入的更多信息: 如何将自签名证书正确导入默认情况下可供所有 Java 应用程序使用的 Java 密钥库?

至少在我的情况下,商店通行证确实是“changeit”。因此,正如我第一次想到的那样,并不意味着将其更改为任何“真正的”商店通行证。

如果使用多个 java 版本或将其添加到所有版本,请务必将证书导入正确的 JRE。

于 2017-06-16T07:26:09.617 回答