我根据这篇文章创建了一个marshallers池:
http://axixmiqui.wordpress.com/2009/09/01/spring-injecting-jaxb-unmarshaller/
我有一个在Spring中定义的NamespacePrefixMapper,我想在Marshaller实例化时设置属性,但我似乎无法做到。每次我尝试设置属性Netbeans都会因为内存不足而崩溃并崩溃,即使我有足够的内存可用。
这是我的Marshaller bean:
<bean id="restMarshallerTarget" class="javax.xml.bind.Marshaller"
factory-bean="jaxbContext" factory-method="createMarshaller" scope="prototype">
</bean>
我的映射器的bean名称是“namespaceMapper”。我试过添加:
<property name="com.sun.xml.bind.namespacePrefixMapper" value="namespaceMapper" />
,
<property name="com.sun.xml.bind.namespacePrefixMapper" ref="namespaceMapper" />
, 和
<property name="com.sun.xml.bind.namespacePrefixMapper"><ref bean="namespaceMapper"/></property>
无论我如何尝试添加映射器,我都会开始例外处理......我做错了什么?
编辑
以下是其中一个例外:
引起:org.springframework.beans.factory.BeanCreationException:在类路径资源[context / spring-ws-servlet.xml]中定义名称为'restMarshallerTarget'的bean时出错:设置属性值时出错;嵌套异常是org.springframework.beans.NotWritablePropertyException:bean类的无效属性'com.sun.xml.bind.namespacePrefixMapper'[com.sun.xml.bind.v2.runtime.MarshallerImpl]:路径'com中的嵌套属性。 sun.xml.bind.namespacePrefixMapper'不存在;嵌套异常是org.springframework.beans.NotReadablePropertyException:bean类的无效属性'com'[com.sun.xml.bind.v2.runtime.MarshallerImpl]:Bean属性'com'不可读或具有无效的getter方法: getter的返回类型是否与setter的参数类型匹配?
这是我之前在代码中设置映射器的方式:
marshaller.setProperty(“com.sun.xml.bind.namespacePrefixMapper”,namespaceMapper);