Установка NamespacePrefixMapper для маршаллера весной - PullRequest
1 голос
/ 05 марта 2012

Я создал пул маршаллеров по этой статье:

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);

...