Я создал пул маршаллеров по этой статье:
http://axixmiqui.wordpress.com/2009/09/01/spring-injecting-jaxb-unmarshaller/
У меня есть NamespacePrefixMapper, также определенный в Spring, и я хотел бы установить свойство, когда создается экземпляр Marshaller, но я не могу этого сделать. Каждый раз, когда я пытаюсь установить свойство, Netbeans выходит из строя и вылетает с ошибкой нехватки памяти, даже если у меня достаточно памяти.
Вот мой боб маршаллера:
<bean id="restMarshallerTarget" class="javax.xml.bind.Marshaller"
factory-bean="jaxbContext" factory-method="createMarshaller" scope="prototype">
</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: Ошибка создания компонента с именем restMarshallerTarget, определенным в ресурсе пути к классу [context / spring-ws-servlet.xml]: Ошибка установки значений свойств; вложенным исключением является org.springframework.beans.NotWritablePropertyException: недопустимое свойство 'com.sun.xml.bind.namespacePrefixMapper' класса бина [com.sun.xml.bind.v2.runtime.MarshallerImpl]: вложенное свойство в пути 'com. sun.xml.bind.namespacePrefixMapper 'не существует; вложенное исключение - org.springframework.beans.NotReadablePropertyException: недопустимое свойство 'com' класса бина [com.sun.xml.bind.v2.runtime.MarshallerImpl]: свойство бина 'com' не читается или имеет недопустимый метод получения: Соответствует ли тип возвращаемого значения получателю типа параметра установщика?
Вот как я ранее установил маппер в коде:
marshaller.setProperty ("com.sun.xml.bind.namespacePrefixMapper", namespaceMapper);