JAX-WS kullanılarak nesne şemasını içe aktarma bildirimi yerine tek bir WSDL dosya bildirimine eklemek için WebLogic 10.3.6 tarafından oluşturulan bir web hizmetini nasıl yapılandırabilirim?JAX-WS ile WebLogic'te şema içe aktarma yapmadan tek WSDL
örnek kod:
Arayüz
import javax.ejb.Local;
@Local
public interface CustomerBeanLocal {
public void updateCustomer(Customer customer);
}
Oturum Bean
import javax.ejb.Stateless;
import javax.jws.WebService;
@Stateless
@WebService
public class CustomerBean implements CustomerBeanLocal {
@Override
public void updateCustomer(Customer customer) {
// Do stuff...
}
}
Oluşturulan WSDL
Aşağıdaki örnekte <xsd:import>
etiketiyle içe aktarılamayan şema tanımlarına ihtiyacımız var, ancak WSDL içinde bildirilmek üzere, tüm sözleşme bilgileri tek bir WSDL dosyasında olduğu anlamına gelir. Diğer dosyaların bağımlılıkları yok.
<!-- ... -->
<types>
<xsd:schema>
<xsd:import namespace="http://mybeans/" schemaLocation="http://192.168.10.1:7001/CustomerBean/CustomerBeanService?xsd=1" />
</xsd:schema>
</types>
<!-- ... -->
WildFly ile aynı kod WSDL içindeki şema türlerini içerir ve içe aktarma özelliğini kullanmayın. Bazı araştırmalardan sonra, Bean/sunucuyu WebLogic'te yapması için bir yol bulamadım (JAX-WS veya WebLogic'e ait özel mülkleri bulamadı).
Dışa aktarılan bir şemaya sahip olmanın (yeniden kullanılabilirlik vb.) Faydalarını anlıyorum, ancak türlerin ithal edilmeyen WSDL içinde bildirilmesi gereken bir gereksinimdir.
Bu da benzer bir soruya oldukça iyi bir cevaptır: http://stackoverflow.com/questions/16030574/jax-ws-has-xsd-schema-in-different-url –
Ben manuel müdahale tasarruf ediyorum son kaynak olarak. Yapılandırmanın bir yolu olmalı (taşınabilir olmayan bir özellikte bile olsa). Eğer manuel baskı, WebLogic için tek alternatifse, muhtemelen sözleşme-ilk nesil için gideceğim. – BonanzaOne