我们有一个在applet中使用JAXB的Web应用程序。一切正常,除非首次创建JAXBContext,我们在applet控制台中看到以下内容:
Creating JAXBContext...
network: Connecting https://myserver.com/MyApp/CC.ccc with proxy=DIRECT
network: Connecting https://myserver.com/MyApp/CC.ccc with cookie "__utma=69126149.1559268128.1262793475.1265211768.1271711769.3; JSESSIONID=723072c1c4bbc2598e402b3f24a5d12f3324"
network: Cache entry not found [url: https://myserver.com/MyApp/com/comm/servlet/generated/package-info.class, version: null]
network: Connecting https://myserver.com/MyApp/com/comm/servlet/generated/package-info.class with proxy=DIRECT
network: Connecting http://myserver.com:443/ with proxy=DIRECT
network: Connecting https://myserver.com/MyApp/com/comm/servlet/generated/package-info.class with cookie "__utma=69126149.1559268128.1262793475.1265211768.1271711769.3; JSESSIONID=723072c1c4bbc2598e402b3f24a5d12f3324"
这种情况总共发生了20次,并且大大减慢了我们的应用程序。
我正在使用“xjc”ant任务(com.sun.tools.xjc.XJCTask)在com / comm / servlet / generated / package中将我们的模式编译为Java。代码生成正常,但没有package-info.java。如果我手动创建此文件并编译和打包代码,则JAR文件中缺少package-info.class。
这是我的XJC任务:
<target name="generateJAXBSource">
<taskdef name="xjc" classname="com.sun.tools.xjc.XJCTask">
<classpath>
<fileset dir="lib/jaxb" includes="*.jar" />
</classpath>
</taskdef>
<xjc schema="resources/requests/111.xsd"
destdir="src"
package="com.comm.servlet.generated"/>
</target>
我的XSD看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xml="http://www.w3.org/XML/1998/namespace">
<xs:import namespace="http://www.w3.org/XML/1998/namespace" />
<xs:element name="InfoResponse">
<xs:complexType>
<xs:sequence>
<xs:element ref="WorkQueueItem" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
我一直在谷歌上搜索,但似乎无法弄清楚如何解决这个问题。
我尝试了here提议的解决方法,以确保编译package-info.java:
......但没有运气。
我可以指示JAXB不要查找package-info.class吗?
如何确保手动创建的package-info.java最终出现在JAR文件中?
感谢。
答案 0 :(得分:0)
您的JAXB实现正在寻找package-info.class来处理模型中可能存在的任何包级别注释。没有标准方法可以阻止JAXB实现查找包级别注释。
添加package-info类(与模型类在同一个包中)似乎是一种合理的解决方法。
package-info是否无法为您编译(如果是这样,您得到的错误)?或者它只是没有出现在你的JAR中(如果是这样你是如何构建你的JAR的那样的)?