小编Jef*_*y P的帖子

wsimport不使用复杂的输入类型

当我使用wsimport为某些服务生成代理时,每个端口的结果方法签名似乎不使用WSDL中指定的复杂类型; 但是我注意到它有一些其他服务.

这发生在多个服务上,但最近的例子是亚马逊的AWSEConsumerService(链接到WSDL).当我使用wsimport生成服务代理代码时,我获得了每个端口的方法签名,如下所示.

@WebMethod(operationName = "ItemLookup", action = "http://soap.amazon.com/ItemLookup")
@RequestWrapper(localName = "ItemLookup", targetNamespace = "http://webservices.amazon.com/AWSECommerceService/2011-08-01", className = "com.aws.CommerceService.ItemLookup")
@ResponseWrapper(localName = "ItemLookupResponse", targetNamespace = "http://webservices.amazon.com/AWSECommerceService/2011-08-01", className = "com.aws.CommerceService.ItemLookupResponse")
public void itemLookup(
    @WebParam(name = "MarketplaceDomain", targetNamespace = "http://webservices.amazon.com/AWSECommerceService/2011-08-01")
    String marketplaceDomain,
    @WebParam(name = "AWSAccessKeyId", targetNamespace = "http://webservices.amazon.com/AWSECommerceService/2011-08-01")
    String awsAccessKeyId,
    @WebParam(name = "AssociateTag", targetNamespace = "http://webservices.amazon.com/AWSECommerceService/2011-08-01")
    String associateTag,
    @WebParam(name = "Validate", targetNamespace = "http://webservices.amazon.com/AWSECommerceService/2011-08-01")
    String validate,
    @WebParam(name = "XMLEscaping", targetNamespace = "http://webservices.amazon.com/AWSECommerceService/2011-08-01")
    String xmlEscaping,
    @WebParam(name = "Shared", targetNamespace = "http://webservices.amazon.com/AWSECommerceService/2011-08-01")
    ItemLookupRequest shared, …
Run Code Online (Sandbox Code Playgroud)

java web-services jax-ws wsimport

9
推荐指数
1
解决办法
5141
查看次数

在运行时从资源设置默认Java SSLContext

我的问题的基本组成部分是(上下文跟随代码片段)

  1. 以下代码是通过-Djavax.net.ssl.keystore设置默认Java密钥库的有效替代方法吗?
  2. 除了更改默认密钥和信任管理器之外,此代码可能会对受影响的JVM中的SSL行为产生什么影响
  3. 是否有更好的替代方法在运行时从资源设置默认信任/密钥存储?

    KeyStore ks = KeyStore.getInstance("JKS");
    ks.load(testService.class.getClassLoader().getResourceAsStream("resources/.keystore"), "changeit".toCharArray());
    TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
    tmf.init(ks);
    KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
    kmf.init(ks, "changeit".toCharArray());
    SSLContext ctx = SSLContext.getInstance("TLS");
    ctx.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);
    SSLContext.setDefault(ctx); 
    
    Run Code Online (Sandbox Code Playgroud)

围绕这个问题的背景如下.我目前正在为具有相互证书身份验证的Web服务开发CXF客户端.由于各种原因,将客户端证书和密钥添加到默认密钥库不是一个理想的选择.理想情况下,我正在寻找一种方法,包括将密钥库作为JAR中的资源文件,并在运行时将其设置为默认值,因为需要出现.我还想避免在每个对象的基础上配置每个客户端和/或连接,并且还支持诸如JaxWsDynamicClientFactory之类的操作(主要是为了"完整性").

我搜索了互联网和搜索相关材料的SO,并找到了这些(,)相关的问题,但没有提供的解决方案正是我所寻找的(尽管我确实使用它们作为跳板来开发上面的代码).

现在,我意识到其他解决方案可以起作用,但我/我正在寻找能够满足所有这些要求的解决方案.

java ssl jax-ws keystore

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

java ×2

jax-ws ×2

keystore ×1

ssl ×1

web-services ×1

wsimport ×1