g.v*_*aag 5 java glassfish jaxb
我使用NetBeans 7.2(在Windows 7环境中)从我的Web应用程序构建war文件,该文件在NetBeans上下文中使用GlassFish 3.1.2服务器的测试阶段正确运行.
package-info.java文件中定义的命名空间正确添加到我的xml文件中.
但是,当我在Linux机器上单独运行GlassFish服务器部署war文件时,命名空间被设置为默认的ns1而不是package-info.java文件定义的那个?
我究竟做错了什么?
此致,杰拉德
为什么我的xml的JAXB名称空间设置为默认ns1?
ns1不是命名空间而是前缀.前缀不重要.例如,以下文件都是等同的.该foo元素在FOO命名空间和bar元素在BAR命名空间.
<a:foo xmlns:a="FOO" xmlns:b="BAR>
<b:bar>Hello World</b:bar>
</a:foo>
Run Code Online (Sandbox Code Playgroud)
<ns1:foo xmlns:ns1="FOO" xmlns:ns2="BAR>
<ns2:bar>Hello World</ns2:bar>
</ns1:foo>
Run Code Online (Sandbox Code Playgroud)
<foo xmlns="FOO" xmlns:b="BAR>
<b:bar>Hello World</b:bar>
</foo>
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
没有.使用JAXB(JSR-222)实现不需要使用@XmlSchema注释中指定的前缀. EclipseLink JAXB(MOXy)和JAXB RI的最新版本一样.似乎是NetBeans 7.2中JAXB的版本/实现,而GlassFish 3.1.2使用的JAXB的版本/实现则没有.
下面是我写的一篇文章的链接,其中详细介绍了NamespacePrefixMapper一些可能有用的扩展.
| 归档时间: |
|
| 查看次数: |
3097 次 |
| 最近记录: |