CXF-код первый веб-сервис создает wsdl с xs: element form = "unqualified", не выбирая пространство имен - PullRequest
1 голос
/ 21 июля 2011

Я создаю веб-сервисы с CXF, используя код в первую очередь.Я хочу использовать пространства имен, и поэтому elementFormDefault имеет значение true .WSDL в порядке, за исключением элементов, встроенных в сложные типы, я получаю следующий элемент xs: с тегом form = "unqualified" .Но я хочу избавиться от form = unqualified tag

<xs:element form="unqualified" name="LikeSearch" type="xs:boolean"/>

Мой package-info.java выглядит так:

@javax.xml.bind.annotation.XmlSchema(namespace="http://registry.erpel.at",
   attributeFormDefault=javax.xml.bind.annotation.XmlNsForm.QUALIFIED,
   elementFormDefault=javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
   package at.erpel.registry.services.webservice;

Конечная точка Java выглядитвот так:

@WebService(targetNamespace = "http://registry.erpel.at", name="CompanyEndpoint")
public interface CompanyEndpoint {
    List<Company> findCompanies(
        @WebParam(name = "FindCompaniesRequest") @XmlElement(required=true) FindCompaniesRequest findCompaniesRequest)
        throws ServiceFault ;

Это запрос FindCompaniesRequest:

@XmlRootElement(name = "FindCompaniesRequest")
public class FindCompaniesRequest extends AbstractRequestType implements Serializable
{
   @XmlElement(name = "LikeSearch", required = true)
   protected boolean likeSearch;
   ...
}

И, наконец, WSDL:

<xs:complexType name="FindCompaniesRequest">
   <xs:complexContent>
      <xs:extension base="tns:AbstractRequestType">
        <xs:sequence>
            <xs:element form="unqualified" name="LikeSearch" type="xs:boolean"/>

Я хочу избавиться от form = "unqualified" * тег 1025 *

Единственное решение, которое я нашел до сих пор, это добавление атрибута пространства имен к каждому отдельному элементу XMLE:

 @XmlElement(name = "LikeSearch", required = true, namespace="http://registry.erpel.at")
 protected boolean likeSearch;

Но я хочу, чтобы ребенокэлементы просто чтобы забрать пространство имен из родительских элементов.Я попытался добавить атрибут пространства имен в аннотацию @XMLRootElement, аннотацию @WebParam и аннотацию @XmlElement в описании метода, но безуспешно.

Кто-нибудь знает, как заставить это работать?

1 Ответ

2 голосов
/ 21 июля 2011

Файл package-info.java может объявлять только значения JAXB по умолчанию для классов в одном пакете; Вы должны поместить один в каждый пакет, который слишком занят созданием классов (или определить намного больше атрибутов ваших аннотаций, что не очень весело).

К счастью, это в значительной степени кодирование по принципу "вырезать и вставить". Просто скопируйте один файл информации о пакете и настройте его, если вы хотите изменить пространство имен.

...