Sto creando un servizio Web utilizzando JAX-WS. Ho uno strano problema che l'annotazione @XmlElement(required=true)
per @WebParam
funziona in alcune classi @WebService
, ma non funziona in alcune altre.@XmlElement (required = true) per @WebParam non funziona
Ho un codice molto simile nelle due classi @WebService
. Cosa potrebbe causare questo problema? Tipo di parametro o classe entità?
Edit: Aggiungere il codice di esempio
Ho due servizi web:
@WebService(name = "ClubMemberPortType", serviceName = "ClubMemberService", portName = "ClubMemberSoapPort", targetNamespace = "http://club.com/api/ws")
public class ClubMemberWS {
@WebMethod(operationName = "findClubMembersByClubId", action = "urn:findClubMembersByClubId")
@WebResult(name = "club_membership")
public List<ClubMembership> findClubMembershipsByClubId(@XmlElement(required=true)
@WebParam(name = "club_id") String clubId,
@WebParam(name = "status") StatusEnum status){
...
}}
e
@WebService(name = "ClubPortType", serviceName = "ClubService", portName = "ClubSoapPort", targetNamespace = "http://club.com/api/ws")
public class ClubWS {
@WebMethod(operationName = "findClubByClubId", action = "urn:findClubByClubId")
@WebResult(name = "club")
public Club findClubByClubId(@XmlElement(required=true)
@WebParam(name = "club_id") String clubId) {
...
}}
Lo schema generato per il primo metodo web è:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://club.com/api/ws">
<soapenv:Header/>
<soapenv:Body>
<ws:findClubMembersByClubId>
<club_id>?</club_id>
<!--Optional:-->
<status>?</status>
</ws:findClubMembersByClubId>
</soapenv:Body>
</soapenv:Envelope>
Lo schema generato per il secondo metodo web è:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://club.com/api/ws">
<soapenv:Header/>
<soapenv:Body>
<ws:findClubByClubId>
<!--Optional:-->
<club_id>?</club_id>
</ws:findClubByClubId>
</soapenv:Body>
</soapenv:Envelope>
Così il primo funziona bene, la seconda non funziona. Come è possibile? :(
Eventuali esempi di codice per i due casi? Il problema reale che stai affrontando (ad esempio eccezioni, migliore descrizione del comportamento, ecc.)? –
Ho aggiunto il codice. – Shichao
Si prega di aggiungere lo stacktrace dell'errore – Tomer