Java JAX-WS在不同的URL中有XSD模式
我使用JAX-WS创建了一个小型web服务。WSDL文件有如下类型的元素Java JAX-WS在不同的URL中有XSD模式,java,web-services,xsd,wsdl,jax-ws,Java,Web Services,Xsd,Wsdl,Jax Ws,我使用JAX-WS创建了一个小型web服务。WSDL文件有如下类型的元素 <types> <xsd:schema> <xsd:import namespace="http://ws.poc.mawia/" schemaLocation="http://localhost:777/ws/hello?xsd=1"/> </xsd:schema> </types> ... ... <xs:complexType
<types>
<xsd:schema>
<xsd:import namespace="http://ws.poc.mawia/" schemaLocation="http://localhost:777/ws/hello?xsd=1"/>
</xsd:schema>
</types>
...
...
<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文件中
应该是这样吗
将XSD与WSDL分离是JAX-WS中的默认行为,您不必太担心它。最新的WS-Framework(包括WCF)通常能够处理这个问题。根据XSD的大小,导入它可能会使WSDL更具可读性。对于一个小型web服务来说,拥有一个嵌入式模式肯定会更容易,但导入它也不是什么大问题
如何配置JAX-WS将所有XSD定义放在一个WSDL文件中
我不知道有什么直接的方法可以让运行时将模式嵌入到WSDL中,但有一种解决方法可以实现这一点:
types
部分,并在那里替换模式导入@WebService
注释。这可能看起来有点像这样:
@WebService( wsdlLocation = "MyWebService.wsdl")
public class MyWebService { .... }
你的方法没有任何问题。WSDL使用URL指向另一个WSDL是可以的
如果不需要,请使用@WebService注释的wsdlLocation属性提及wsdl位置。但同样,使用这种方法,您必须手动修改wsdl。MyWebService是一个类或接口?在我这里的设置中,它是一个类
MyWebService
仍然实现一个接口(带有@WebService
注释),并使用endpointInterface
属性指向该接口。Aka:@WebService(endpointInterface=“some.package.MyPortType”,…)