gpt4 book ai didi

java - 拒绝 namespace 仅在文件扩展名(最后一个点之后的部分)不同的 WSDL 是否合法?

转载 作者:行者123 更新时间:2023-11-30 05:54:19 24 4
gpt4 key购买 nike

我有一个复杂的 Web 应用程序,它使用许多 Web 服务。我必须开始使用新的。此新服务的 WSDL 定义了一个目标 namespace ,该 namespace 与旧 WSDL 中使用的 namespace 几乎相同。仅最后一个点之后的部分不同。

JAXB 推导的包名称对于它们来说是相同的,并且从第二个生成的 ObjectFactory 会覆盖另一个。

例如,一个 wsdl 具有目标命名空间“http://foo.com/a.b.c ”,另一个 wsdl 具有“http://foo.com/a.b.c_2 ”。那么两个命名空间的 java 包名称都是 com.foo.a.b,这是一种冲突。

我检查了 JAXB 规范并发现了这个( https://download.oracle.com/otn-pub/jcp/jaxb-2.0-fr-eval-oth-JSpec/jaxb-2_0-fr-spec.pdf?AuthParam=1542978637_f7c18a1892b0ff022071acdab6259bdd ):

D.5.1 Mapping from a Namespace URI An XML namespace is represented by a URI. Since XML Namespace will be mapped to a Java package, it is necessary to specify a default mapping from a URI to a Java package name. The URI format is described in [RFC2396]. The following steps describe how to map a URI to a Java package name. The example URI, http://www.acme.com/go/espeak.xsd, is used to illustrate each step.

  1. Remove the scheme and ":" part from the beginning of the URI, if present. Since there is no formal syntax to identify the optional URI scheme, restrict the schemes to be removed to case insensitive checks for schemes “http” and “urn”.

    //www.acme.com/go/espeak.xsd

  2. Remove the trailing file type, one of .?? or .??? or .html.

    //www.acme.com/go/espeak

    ...

我这边可能有解决方法,但我希望网络服务提供商通过使用“正确的”命名空间来“纠正”这种情况,这些命名空间仅在最后一部分(文件扩展名)上没有区别用 JAXB 的话说?)。

我正在寻找“我的案例”的论据。

最佳答案

请参阅Namespaces in XML 1.0 §2.3 Comparing URI References :

URI references identifying namespaces are compared when determining whether a name belongs to a given namespace, and whether two names belong to the same namespace. [Definition: The two URIs are treated as strings, and they are identical if and only if the strings are identical, that is, if they are the same sequence of characters. ] The comparison is case-sensitive, and no %-escaping is done or undone.

如果您的命名空间“仅文件扩展名不同”,则这些是不同的命名空间。如果您的工具为它们生成相同的包,那么问题就出在您这边,而不是 WSDL 作者那边。

所以不,抱歉,您没有真正充分的论据来支持“您的情况”。

修复很简单:只需为每个命名空间配置目标包即可。例如,请参阅以下问题:

CXF: How to change package of WSDL imported XML Schema using JAXB external binding file?

关于java - 拒绝 namespace 仅在文件扩展名(最后一个点之后的部分)不同的 WSDL 是否合法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53448433/

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