gpt4 book ai didi

java - 如何从独立的 java 文件调用 JAX WS?

转载 作者:搜寻专家 更新时间:2023-10-31 19:55:52 24 4
gpt4 key购买 nike

我正在尝试从独立的 java 类(包含 main 方法)调用 jax ws web 服务。我已经在 SOAP UI 中试过了,它返回了响应。

我的 Java 代码: ma​​in() 方法内部:

GInformation getGMInfo = new GInformation();
GInformationResult getGMResult = new GInformationResult();

GKService GKProxy = getProxy();

//Set the Request
XMLGregorianCalendar xmlGreg = null;
getGMInfo.setRequestId("");
getGMInfo.setMessageDateTime(xmlGreg);

try {
//Get the response
getGMResult = GKProxy.getGInformation(getGMInfo);
System.out.println("Address: "+getGMResult.getInfo());
} catch (OperationFaultException e) {
e.printStackTrace();
} catch (SystemFaultException e) {
e.printStackTrace();
}

但是它失败了,出现这样的错误:

org.apache.axis2.AxisFault:WSWS7130E:没有可用于 https://mklip.verd.Gin/WS/v2.8 端点的安全套接字层 (SSL) 配置。

很长一段时间以来,我一直在努力纠正这个问题,并且快要发疯了。有人能告诉我我做错了什么吗?是否可以从一个独立的 java 类调用 jax-ws,或者我们是否需要 Web 服务器?但是这个应用程序没有网络服务器。

最佳答案

我不得不越来越深入地研究以解决这个问题。我遇到的问题是受信任的证书问题。因此,首先,我获得了调用服务所需的证书(cert1.cer、cert2.cer)。

然后我使用这些步骤在本地集成了证书:

1. Place the below cry certificates in the path "C:\Program Files\IBM\SDP\jdk\jre\lib\security"

cert1.cer, cert2.cer

2. cacerts is the trusStore file. It's present in :
C:/Program Files/IBM/SDP/jdk/jre/lib/security/cacerts

3. In command prompt perform the below execution
C:\Program Files\IBM\SDP\jdk\jre\lib\security>"C:\Program Files\IBM\SDP\jdk\jre\bin\keytool" -import -alias cert1 -file cert1.cer -keystore cacerts

4. If it asks keystore password, mention changeit, which is the default keystore password

Enter keystore password: changeit

Trust this certificate? [no]: yes
Certificate was added to keystore

5. Peform the steps 3 and 4 for the second certificate(cert2.cer).

但这还不够。我必须像这样以编程方式设置 javax.net.ssl :

System.setProperty("javax.net.ssl.trustStore", "C:\\Program Files\\IBM\\SDP\\jdk\\jre\\lib\\security\\cacerts");
System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
System.setProperty("javax.net.ssl.keyStore", "C:\\Program Files\\IBM\\SDP\\jdk\\jre\\lib\\security\\cacerts");
System.setProperty("javax.net.ssl.keyStorePassword", "changeit");

以上几行代码确保了 trustStorekeyStore 被设置为在 WS 调用期间调用 SSL。

这不是一件容易的事,因此我在这里提供了解释和答案,以便万一有人遇到同样的问题,那么他/她可以将其作为缓解他们问题的引用。干杯!

关于java - 如何从独立的 java 文件调用 JAX WS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18654277/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com