我使用package-info.java
来指定@XmlAccessorType(XmlAccessType.NONE)
和一些使用@XmlJavaTypeAdapters
的xml java适配器。模型对象(带有JAXB注释)被放置在其他模块共享的独立maven模块中。如果模型对象在单独的maven模块中,则不会发现package-info.java
中的配置。如果我出于测试目的将模型对象移到同一个maven模块,一切都可以。我认为从JAXBContext
的角度来看,单独的maven模块可以被视为等效于第三方lib。我使用JDK1.7 JAXB参考实现。你知道配置可能有什么不同吗?
我也遇到了这个问题,在我的例子中,package-info.java中的合格/不合格属性被忽略了。我设法找到了两种方法来解决这个问题:
- 正如Pavla所写的,使用package-info.java在本地复制所有JAXB类
- 将模块作为具有编译作用域的依赖项包括在内(这给出了类在模块中的类似结果。在我的例子中,我使用JAXB类创建了单独的jar lib)
我还发现,它不仅在创建WebServices的情况下有效(在不同的模块中创建对象并发送到WS可以很好地工作)。
我使用的是Jbossas 7.1.1和cxf 2.4.6。在注册服务的时候,Jboss从JAXB创建了wsdl(在我的例子中是路径/opt/Jboss/Jboss-as-77.1.1.Final/standalone/data/wsdl/module.war/SubmitMessage.wsdl)。本地设置文件正确生成。
你知道为什么创建WS会这样吗?
我最近遇到了这个问题,实际的问题(Java 8,即没有涉及Java模块)是我在类路径上有两个*.jar文件,它们都包含同一个包-在一个jar中,有带有JAXB注释的package-info.class,而在另一个中,没有。在这种情况下,我猜package-info.class文件是否被发现取决于类路径排序(这是非常脆弱的,并且只是半确定性的)。