Как настроить префиксы пространств имен на Джерси (JAX-WS)

при сериализации моих ресурсов на Джерси я хочу в некоторых случаях использовать пространства имен.

Есть ли способ настроить префиксы пространства имен на джерси?

Дефолт:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<order xmlns:ns2="http://www.w3.org/2005/Atom">
   <price>123</price>
   <ns2:link rel="duh" href="/abc/123"/>
   <ns2:link rel="abc" href="/def/234"/>
</order>

Я хочу что-то вроде:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<order xmlns:atom="http://www.w3.org/2005/Atom">
   <price>123</price>
   <atom:link rel="duh" href="/abc/123"/>
   <atom:link rel="abc" href="/def/234"/>
</order>

Спасибо, Лукас


person Lucas Cavalcanti    schedule 01.09.2010    source источник


Ответы (1)


Если вы используете реализацию JAXB MOXy, вы можете управлять своими префиксами с помощью аннотации уровня пакета @XmlSchema. :

@javax.xml.bind.annotation.XmlSchema(  
    xmlns = {  
          @javax.xml.bind.annotation.XmlNs(prefix = "atom", namespaceURI = "http://www.w3.org/2005/Atom")  
            })  
    package org.example.domain;  

Чтобы использовать MOXy JAXB, вам необходимо иметь файл с именем jaxb.properties с вашими классами моделей со следующей записью:

javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory

Пример использования MOXy с Джерси см.:

person bdoughan    schedule 01.09.2010
comment
Звучит красиво =) Так что нет возможности сделать это со стандартным JAXB? - person Lucas Cavalcanti; 01.09.2010
comment
Стандарт JAXB (JSR-222) не определяет способ сделать это. Реализация MOXy JAXB использует стандартную аннотацию для получения желаемого поведения. Metro JAXB (эталонная реализация) предлагает расширение под названием NamespacePrefixMapper для достижения этого результата: blogs.sun.com /enterprisetechtips/entry/customizing_jaxb - person bdoughan; 01.09.2010
comment
Можно ли изменить реализацию JAXB на Grizzly? Не работают ни jaxb.properties, ни init-params. Мне придется развернуть свое приложение на сервере приложений? - person Lucas Cavalcanti; 03.09.2010
comment
Теперь это работает... maven не экспортировал jaxb.properties в путь к классам. Спасибо =) - person Lucas Cavalcanti; 03.09.2010
comment
Не могли бы вы взглянуть на мой вопрос: stackoverflow.com/questions/6808921/ - person Ali Shakiba; 24.07.2011