wsimport tool'u (ver : jaxws-ri-2.2.10)
ile bir wsdl üzerinden ilgili web servisine erişebilmek için gerekli dosyaları
generate etmek için komut satırından
C:\path\to\jaxws-ri-2.2.10\jaxws-ri\bin>wsimport
-keep -verbose http://some_service_url:1111/service_name?WSDL -p
com.cenkc.ws.service_name -d \path\to\files_to_be_generated
komutunu çalıştırdığımda aşağıdaki gibi
bir hata aldım :
"[ERROR] Schema descriptor
{http://some_url/service_name/schemas}SomeElementName in message part
"request" is not defined and could not be bound to Java. Perhaps the
schema
descriptor {http://some_url/service_name/schemas}SomeElementName is
not defined in the schema imported/included in the WSDL. You
can either add
such imports/includes or run wsimport and provide the schema location using -b
switch.
line 5 of http://some_service_url:1111/service_name?WSDL
Exception in thread
"main" com.sun.tools.ws.wscompile.AbortException
at com.sun.tools.ws.processor.modeler.wsdl.WSDLModelerBase.error(WSDLModelerBase.java:747)
at
com.sun.tools.ws.processor.modeler.wsdl.WSDLModeler.getJAXBType(WSDLModeler.java:1662)
at
com.sun.tools.ws.processor.modeler.wsdl.WSDLModeler.getDoclitParameters(WSDLModeler.java:1688)
at
com.sun.tools.ws.processor.modeler.wsdl.WSDLModeler.processLiteralSOAPOperation(WSDLModeler.java:790)
at
com.sun.tools.ws.processor.modeler.wsdl.WSDLModeler.processSOAPOperation(WSDLModeler.java:713)
at
com.sun.tools.ws.processor.modeler.wsdl.WSDLModeler.processPort(WSDLModeler.java:481)
at
com.sun.tools.ws.processor.modeler.wsdl.WSDLModeler.processService(WSDLModeler.java:259)
at com.sun.tools.ws.processor.modeler.wsdl.WSDLModeler.internalBuildModel(WSDLModeler.java:231)
at
com.sun.tools.ws.processor.modeler.wsdl.WSDLModeler.buildModel(WSDLModeler.java:141)
at
com.sun.tools.ws.wscompile.WsimportTool.buildWsdlModel(WsimportTool.java:444)
at com.sun.tools.ws.wscompile.WsimportTool.run(WsimportTool.java:205)
at com.sun.tools.ws.wscompile.WsimportTool.run(WsimportTool.java:183)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.sun.tools.ws.Invoker.invoke(Invoker.java:174)
at com.sun.tools.ws.WsImport.main(WsImport.java:57)"
İlk önce hata mesajında belirtilen schema
descriptor linkini (http://some_url/service_name/schemas)
açmayı denedim ve başarısız oldum.
Ardından, http://some_service_url:1111/service_name?WSDL linkini açtığımda, hata açıklamasında yazan "request"
kısmını arattım, aşağıdaki bölüm geldi :
Buradaki element bilgisi olan "nsx1:..."
in wsdl'daki karşılığı xmlns:nsx1="http://some_url/service_name/schemas" şeklinde. Ama wsimport tool'u bu url'e
erişemediği için hata alıyor olduğum konusu netleşti.
Hatayı araştırırken wsimport komutunun "-b" parametresi
ile başka bir schema tanımlanarak çalıştırılabileceğini gördüm. Örnekte bu bir
xsd dosyası (XML Schema Definition) idi.
C:\path\to\jaxws-ri-2.2.10\jaxws-ri\bin>wsimport
–help
Usage:
wsimport [options]
where
[options] include:
-b
specify jaxws/jaxb binding files or additional schemas
(Each
must have its own -b)
wsimport tool'unu, WSDL içindeki ilgili
xsd'nin location bilgisini () kullanacak şekilde aşağıdaki gibi düzenlediğimde
sorun düzeldi :
wsimport -keep -verbose
http://some_service_url:1111/service_name?WSDL -p com.cenkc.ws.service_name -d \path\to\files_to_be_generated
-b http://some_service_url:1111/service_name?WSDL/service_name.xsd
Merhaba, Konuyla direk alakalı değil ama bir kaç gündür SSL üzerinden hizmet veren bir web servisine bağlanmaya çalışıyorum. Ancak bir türlü beceremedim. SOAPUI aracı ile bir mock SSL oluşturup bağlantıyı sağladım ama java tarafında bunu nasıl yapabilirim bulamadım. Java konusunda çok bilgiye sahip değilim bu konuda yardımınız olur mu?
YanıtlaSil