2012-08-17 150 views
0

我需要一个旧软件(我没有开发过)来测试旧设备。设备通过web服务向服务器“通话”。这些Web服务是由轴自动生成的(Axis需要一个类并使用它的方法创建Web服务)。(Axis + Jetty)前缀自动生成的前缀命名空间

的问题是:设备的开发是为了读这样一个xml:

<ns:getReferenceCurveResponse xmlns:ns="http://services.teste.org" xmlns:ax22="http://data.teste.org/xsd" xmlns:ax23="http://util.java/xsd"> 
<ns:return type="org.teste.ReferenceCurve"> 
<ax21:createdOn>2012-08-16 17:00:59.0</ax21:createdOn> 
<ax21:endPoint>9.2</ax21:endPoint> 
<ax21:fiberId>21</ax21:fiberId> 
<ax21:id>42</ax21:id> 

而现在的web服务未来是这样的:

<ns:getReferenceCurveResponse xmlns:ns="http://services.teste.org" xmlns:ax22="http://data.teste.org/xsd" xmlns:ax23="http://util.java/xsd"> 
<ns:return type="org.teste.ReferenceCurve"> 
<ax22:createdOn>2012-08-16 17:00:59.0</ax22:createdOn> 
<ax22:endPoint>9.2</ax22:endPoint> 
<ax22:fiberId>21</ax22:fiberId> 
<ax22:id>42</ax22:id> 

正如您所注意到的前缀命名空间有因为设备被编码为前缀ax21,所以从ax21更改为ax22将产生错误。

我已经找到了一个解决方案,但找不到。我已经重新编译了服务器端,也没有成功。我无法找到任何地方来改变这个名称空间前缀,因为它是自动生成的Axis2

回答

0

我找不到任何东西来解决这个问题。由于它用于本地测试(服务器端,已启动并运行在客户端),并且由于此更改仅影响服务器端,所以我设法将名称空间前缀'ax22'更改为'ns'

你可以通过添加该标签的services.xml:

<schema schemaNamespace="http://your.package.inverted/xsd"/> 

一样,如果你有com.google.something包,它应该是这样的:

<schema schemaNamespace="http://something.google.com/xsd"/> 
1

好吧,它一直缠绕一整天,所以我会抛出绝对错误的方式来处理这与码头,因为码头是在这里

标签中的一个你可以使用一个Servlet过滤器和调整的飞行,以解决该命名空间问题的响应....但是这将是很坏很坏的坏:)

好运!

+0

呀。我没有找到任何东西来证明这一点。大多数地方都说Axis2自己决定这件事。 – lcguida 2012-08-20 12:46:56