我要管理很多网络服务,并且必须将我的应用程序放在他们和客户端:客户端会打电话给我,我会调用服务器并管理响应以将它们发送给客户。
请求和响应都有一个'信封定义:不同但几乎相同。
让我们说:
<req xmlns="namespaceReq">
<req-data>..different info 1..</req-data>
<info>...Info object...</info>
</req>
和
<resp xmlns="namespaceResp">
<resp-data>..different info 2...<resp-data>
<info>...Info object...</info>
</resp>
所以我想在请求和响应之间共享公共类-aka信息对象 - ;我已经为请求做了一个java包(请求的命名空间在其package-name和Req-req-data类中),另一个用于响应(在包名中包含响应的命名空间,以及还有,Resp和Resp-data类)并且已经完成了另一个包来保存公共部分(Info类),这就是我的问题......
我应该如何管理名称空间,以便将共同的Info对象共享给请求和响应?
如果我将请求的命名空间放在package-info.java中,它适用于请求但不适用于响应,如果我把响应它不适用于请求...
答案 0 :(得分:1)
公共对象包应该定义自己的XML命名空间...我已经完成了你尝试做的配置,但我从XSD文件中生成了对象......例如:
XSD Commons:
<xs:schema
targetNamespace="http://xyz/commons"
xmlns:tns="http://xyz/commons"
elementFormDefault="qualified"
version="1.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="InfoType">
<xs:sequence>
<xs:element name="Address" type="xs:string" maxOccurs="1" />
</xs:sequence>
</xs:complexType>
</xs:schema>
XSD请求:
<xs:schema
targetNamespace="http://xyz/requests"
xmlns:tns="http://xyz/requests"
xmlns:commons="http://xyz/commons"
elementFormDefault="qualified"
version="1.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
>
<xs:import namespace="http://xyz/commons" schemaLocation="commons.xsd" />
<xs:element name="Request" type="tns:RequestType" />
<xs:complexType name="RequestType">
<xs:sequence>
<xs:element name="info" type="commons:InfoType" />
</xs:sequence>
</xs:complexType>
</xs:schema>