当前位置: 首页 > 知识库问答 >
问题:

JAX-WS在不同的URL中有XSD模式

马飞
2023-03-14

我使用JAX-WS制作了一个小型Web服务。WSDL文件有这样的TYPES元素。

<types>
  <xsd:schema>
  <xsd:import namespace="http://ws.poc.mawia/" schemaLocation="http://localhost:777/ws/hello?xsd=1"/>
  </xsd:schema>
</types>

Web服务的URL是http://localhost:777/ws/hello?wsdl,XSD是http://localhost:777/ws/hello?xsd=1。位于不同位置的XSD模式文件具有这样的数据类型定义。

...
 ...
    <xs:complexType name="student">
     <xs:sequence>
     <xs:element name="name" type="xs:string" minOccurs="0"/>
     <xs:element name="rollNo" type="xs:int"/>
     </xs:sequence>
    </xs:complexType>
  ...
 ...

我看到的大多数WSDL文件通常在WSDL文件本身中有完整的XSD定义,但JAX-WS将其放置在不同的位置。

应该是这样吗?如何配置JAX-WS将所有XSD定义放在一个WSDL文件中?

共有2个答案

梅飞宇
2023-03-14

你的方法没有任何问题。WSDL使用URL指向另一个WSDL是可以的。

如果不需要,请使用@WebService注释的wsdlLocation属性提及wsdl位置。但同样,使用这种方法,您必须手动修改wsdl。

孟胤
2023-03-14

应该是这样吗?

将XSD与WSDL分离是JAX-WS中的默认行为,您不必太担心它。最新的WS-Framework(包括WCF)通常能够处理这个问题。根据XSD的大小,导入它可能会使WSDL更具可读性。对于一个小型web服务来说,拥有一个嵌入式模式肯定会更容易,但导入它也不是什么大问题。

如何配置JAX-WS将所有XSD定义放在一个WSDL文件中?

我不知道有什么直接的方法可以让运行时将模式嵌入到WSDL中,但有一种解决方法可以实现这一点:

  1. 发布endpoint并保存WSDL和XSD

您可以实现4。通过自定义@WebService注释。这可能看起来有点像这样:

@WebService( wsdlLocation = "MyWebService.wsdl")
public class MyWebService { .... }
 类似资料:
  • 问题内容: 我有一个已导入xsd的wsdl,此xsd具有类似如下的限制: 因此,我想细想一下,当我通过netbeans将这个耳朵部署到glassfish上时,将对传入的数据进行验证,但事实并非如此。在将数据传递给我的@WebService对象并转换为Java对象之前,是否需要进行任何调用以确保数据经过验证。 问题答案: 使用SchemaValidation批注。 请注意,它仅适用于文档/文字样式的

  • 我有一个JAX-WS注释的Web服务,当我将其部署到WildFly 8.1.0 Final中时,我有如下内容: 当我想要这样的东西时: 因此,基本上,我希望WildFly/JAX-WS将一些类型放在一个单独的XSD模式文件中,而不是仅仅在WSDL文件中显示它们。 我可以通过一些注释或一些配置文件来执行此操作吗?

  • 我有一个带有jaxb-impl.jar的第三方jar,并将其包含在清单类路径中。问题是,提供自己的JAXB版本(不管它是哪个版本)似乎会破坏JAX-WS中的SoapFaultBuilder。 根据非官方的JAXB指南,Sun在将JAXB折叠到JDK中时似乎故意更改了包名,以避免与独立版本发生冲突。但是,JDK附带的SoapFaultBuilder(我相信是JAX-WS的一部分)明确依赖于新的内部包

  • JAX-WS (JavaTM API for XML-Based Web Services)规范是一组XML web services的JAVA API。JAX-WS允许开发者可以选择RPC-oriented或者message-oriented 来实现自己的web services。 在 JAX-WS中,一个远程调用可以转换为一个基于XML的协议例如SOAP。在使用JAX-WS过程中,开发者不需要

  • Apache CXF WebService 没有话说,享受沉默 showcase项目已演示了JAX-WS2.0 + CXF 的最重要特性, 其中客户端在测试用例里. SOAP这个名字,本身就是个笑话,一点都不Simple。其他一些WS-*协议,包括安全,附件等都不再看好,因此SpringSide4.0没什么更新。 测试工具依然是SoapUI。 Tips 1. CXF自动生成的WSDL与WADL文件

  • 我正在使用Apache Tomcat v6服务器。在创建新的网络服务时,我获得了“Apache Axis”、“Apache Axis2”和“Apache CXF2. x”的网络服务运行时选项。 是否可以将运行时设置为“JAX-RPC”或“JAX WS”? 编辑: 我正在使用Eclipse IDE