6

Mam wiele punktów końcowych opatrzone komentarzem: @WebService(targetNamespace = "mynamespace"). Co @WebResult i @WebParam ma taką samą definicję targetNamespace = "mynamespace".Jak mogę skonfigurować docelową przestrzeń nazw globalnie w serwisach WWW JAX-WS?

Czy istnieje sposób, aby skonfigurować JAX-WS (implementacja Metro), aby domyślnie używać "mynamespace" jako targetNamespace?

Chciałbym użyć adnotacji bez żadnych atrybutów i pozbyć się duplikatów, podobnie jak konwencja przez konfigurację.

Odpowiedz

2

Tylko umieścić targetNamespace w interfejsie końcowego usług lub realizacji usług fasola.

/** 
* Annotated Implementation Object 
*/ 
@WebService(
    name = "CustomerService", 
    targetNamespace = "http://org.company.services" 
) 
public class CustomerService { 
    @WebMethod 
    @WebResult(name="CustomerRecord") 
    public CustomerRecord locateCustomer(
     @WebParam(name="FirstName") String firstName, 
     @WebParam(name="LastName") String lastName, 
     @WebParam(name="Address") USAddress addr) { 
     ... 
    } 
}; 

Jeśli @WebResult lub @WebParam nie mają targetNamespace, domyślnie jest targetNamespace dla usługi sieci Web.

W drugiej ręce możesz uniknąć wszystkich adnotacji i używać tylko @WebService, jeśli nie potrzebujesz czegoś niestandardowego z JAX-B.

Zobacz więcej JSR-181 Web Services Metadata for the JavaTM Platform

+6

Kiedy pominąć 'targetNamespace' w' @ WebResult' i co '@ WebParam' wygenerowany XML w odpowiedzi SOAP ma nazw dla tagu XML peryferyjnych (np' '), ale wewnętrzne używają domyślnej przestrzeni nazw (np.' '). To samo dzieje się z parametrami (' 'zamiast' '). – timomeinen

+0

Można by pomyśleć, że powyższy przykład zadziała, ale niestety nie podoba mu się wspomniany wyżej tim. Dlaczego coś tak prostego nie jest łatwe do osiągnięcia? Musi istnieć sposób, aby nie kopiować i nie wklejać tej przestrzeni nazw do każdej adnotacji WebParam i WebResult. – GreenieMeanie

Powiązane problemy