2013-05-21 4 views
1

У меня есть WS, который генерирует сообщение XML. Из-за ограничений по размеру я хотел бы удалить ненужные пробелы (используемые для отступов) и новые строки. Как это сделать при использовании сгенерированных классов и аннотаций (@WebService и @WebMethod)? В примерах, которые я видел, это делается так:удалить пробелы из jaxb xml response

Marshaller m = jc.createMarshaller(); 
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.FALSE); 

Однако, я не создавать Marshaller вручную, так что я не знаю, где я могу добавить это свойство и, если это правильный способ сделать это. Реализация JAXB - axis2.

ответ

1

Создание пользовательских JAXBContext и аннотировать WebService, как указано ниже:

@WebService(serviceName = "Hello") 
    @UsesJAXBContext(value = CustomJaxbContext.class) 
    public class HelloWS 
    { ... 
    } 

    public class HelloJaxbContext implements JAXBContextFactory 
    { 
     @Override 
     public JAXBRIContext createJAXBContext(SEIModel seim, List<Class> classesToBind, List<TypeReference> typeReferences) throws JAXBException { 
      //JAXBRIContext extends JAXBContext, so you should be able to set the desired marshaller properties 
      //create your jaxb context with necessary properties for marshalling 
      return yourJAXBRIContext; 
     } 
    } 

См http://javasourcecode.org/html/open-source/jdk/jdk-6u23/com/sun/xml/internal/ws/developer/JAXBContextFactory.html

Смежные вопросы