Come configurare un servizio Web generato da WebLogic 10.3.6 utilizzando JAX-WS per includere lo schema di oggetto all'interno di una singola dichiarazione di file WSDL, anziché una dichiarazione di importazione?Singolo WSDL senza importazione di schemi in WebLogic con JAX-WS
codiceEsempio:
interfaccia
import javax.ejb.Local;
@Local
public interface CustomerBeanLocal {
public void updateCustomer(Customer customer);
}
Session Bean
import javax.ejb.Stateless;
import javax.jws.WebService;
@Stateless
@WebService
public class CustomerBean implements CustomerBeanLocal {
@Override
public void updateCustomer(Customer customer) {
// Do stuff...
}
}
WSDL generato
Le definizioni dello schema non devono essere importate con il tag <xsd:import>
nell'esempio seguente, ma per essere dichiarate all'interno del WSDL, il che significa che tutte le informazioni sul contratto si trovano in un singolo file WSDL. Nessuna dipendenza da altri file.
<!-- ... -->
<types>
<xsd:schema>
<xsd:import namespace="http://mybeans/" schemaLocation="http://192.168.10.1:7001/CustomerBean/CustomerBeanService?xsd=1" />
</xsd:schema>
</types>
<!-- ... -->
Lo stesso codice con WildFly include i tipi di schema all'interno del WSDL e non utilizzare la funzione di importazione. Dopo alcune ricerche non ho trovato un modo per configurare il bean/server per farlo in WebLogic (non ho trovato caratteristiche proprietarie JAX-WS o WebLogic per farlo).
Capisco i vantaggi di avere uno schema esportato (riusabilità, ecc.) Ma è un requisito del progetto che i tipi devono essere dichiarati all'interno del WSDL, non importati.
Questa è una buona risposta a una domanda simile: http://stackoverflow.com/questions/16030574/jax-ws-has-xsd-schema-in-different-url –
Mi risparmio intervento manuale come ultima risorsa. Ci dovrebbe essere un modo per configurarlo (anche con una funzione non portatile). Se l'edizione manuale è l'unica alternativa per WebLogic, allora probabilmente andrò per la prima generazione del contratto. – BonanzaOne