Генерация wsdl с использованием аннотированных сервисов / сущностей Websphere и JAXB - PullRequest
1 голос
/ 17 мая 2011

Я пытаюсь сгенерировать wsdl. Сервис построен как показано ниже. Ничего необычного на самом деле, но у меня действительно есть Исключение, которое я хочу выбросить, расположенное в отдельном пакете, поэтому оно появляется в другом пространстве имен, чем служба и сущность в сгенерированном wsdl. Извлечение файла wsdl (http://service.example.com/?wsdl) создает этот файл ниже, который не проверяется, поскольку, опять же, Исключение не находится в том же пространстве имен. Есть ли способ сгенерировать wsdl, который проверяет одновременно наличие исключения в отдельном пакете (имейте в виду, что я хочу повторно использовать исключение в других службах, а также в других пространствах имен).

package com.example.exception;

XmlAccessorType(XmlAccessType.FIELD)
@XmlType(namespace="http://exception.example.com")
public class ServiceException extends Exception {


    public ServiceException() {
        super();
    }

    .....

}



package com.example.service;

public interface DoSomethingService {

    @ResponseWrapper(localName = "findResponseTag")
    public Entity find( @WebParam(name="input") String input ) throws ServiceException;

    .....
}

package com.example.service;

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(namespace = "http://entity.example.com")
public class Entity {

    @XmlAttribute
    private String name;

    public Entity(){

    }

    .....
}

Сгенерированный wsdl: ServiceException, указанный ниже, находится в ns4, а не в tns.

<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
    xmlns:tns="http://service.example.com/"
    xmlns:SOAP11="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:SOAP="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns4="http://exception.example.com/"
    name="DoSomethingServiceService" targetNamespace="http://service.example.com/">
<wsdl:types>
        <xs:schema xmlns:ns1="http://service.ancillary.model.vsp.com"
            xmlns:tns="http://exception.example.com/" xmlns:xs="http://www.w3.org/2001/XMLSchema"
            targetNamespace="http://exception.example.com/" version="1.0">
            <xs:import namespace="http://exception.example.com" />
            <xs:element name="ServiceException" type="tns:ServiceException" />
            <xs:complexType name="ServiceException">

                .....

            </xs:complexType>
        </xs:schema>

    ..........

    <wsdl:portType name="DoSomethingService">
        <wsdl:operation name="find">
            <wsdl:input message="tns:find"></wsdl:input>
            <wsdl:output message="tns:findResponse"></wsdl:output>
            <wsdl:fault name="ServiceException" message="ns4:ServiceException"></wsdl:fault>
        </wsdl:operation>
    </wsdl:portType>


</wsdl:types>

.....

</wsdl:definitions>
...