java - javax.xml.bind.JAXBException:不包含 ObjectFactory.class o jaxb.index
问题描述
我有一个需要用作 SOAP 客户端的 Java Spring Web 应用程序。
我正在使用 Maven,并且我有一个带有自定义代码的主模块(WAR)和一个带有 WSDL(我有两个 WSDL)生成的类的子模块(JAR 依赖项)。
正如您在标题中看到的,当我运行应用程序时发生错误
javax.xml.bind.JAXBException: doesn't contain ObjectFactory.class or jaxb.index
这是主模块的 ApplicationContext.xml:
<bean id="messageFactory" class="org.springframework.ws.soap.saaj.SaajSoapMessageFactory"/>
<bean id="webServiceTemplate" class="org.springframework.ws.client.core.WebServiceTemplate">
<constructor-arg ref="messageFactory"/>
<property name="marshaller" ref="marshaller" />
<property name="unmarshaller" ref="marshaller" />
<property name="interceptors">
<list>
<ref bean="wsSecurityInterceptor" />
</list>
</property>
</bean>
<bean id="wsSecurityInterceptor" class="org.springframework.ws.soap.security.wss4j2.Wss4jSecurityInterceptor">
<property name="securementActions" value="UsernameToken" />
<property name="securementUsername" value="xxx" />
<property name="securementPassword" value="xxxx" />
<property name="securementPasswordType" value="PasswordText" />
</bean>
<bean id="marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="contextPaths">
<list value-type="java.lang.String">
<value>my.package.path.wsdl</value>
<value>my.package.path.wsdlserver</value>
</list>
</property>
</bean>
在子模块中正确生成了 WSDL 类,并且每个包中存在两个 ObjectFactory.class:
my.package.path.wsdl
my.package.path.wsdlserver
Marshaller Bean 期间引发错误:
Error creating bean with name 'marshaller' defined in ServletContext resource
...
javax.xml.bind.JAXBException: "my.package.path.wsdl" doesn't contains ObjectFactory.class or jaxb.index
我发现了几个关于这个问题的线程,但由于 ObjectFactory.class 存在(由 maven-jaxb2-plugin.
提前感谢您的支持,并对我的英语感到抱歉。
解决方案
好的,我以这种方式解决了更改 Marshaller Bean 定义的问题:
<bean id="marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="packagesToScan">
<list>
<value>my.package.path.wsdl</value>
<value>my.package.path.wsdlserver</value>
</list>
</property>
</bean>
我需要从contextPaths属性切换到packagesToScan
推荐阅读
- reactjs - 在 React Native 中使用 useContext 显示登录用户
- symfony - Shopware 5 - 列名未通过片段更改
- c# - NET 5 返回错误的 DateTimeFormat.FirstDayOfWeek
- python - 使用第二级的最大值对 pandas 多索引数据帧进行切片
- python - Tensorboard - ValueError:解包的值太多(预期 2)
- c# - C#中mysqlconnection的使用
- python - 如何在Python中拒绝击键,除了一个
- css - 用网格线和线交叉的元素反应网格
- django - Django 2.2 + AttributeError:'str'对象没有属性'decode'
- python - 我刚开始学习 Django,在为某个项目创建虚拟环境时遇到了困难,这是什么意思?