2013-07-08 4 views
2

Я пытаюсь вызвать простой веб-службы общественного с WSClient в Groovy скрипт, но он взрывается при инициализации ...Groovy: WSClient метания JAXBException

TestService.groovy:

@Grab(group='org.codehaus.groovy.modules', module='groovyws', version='0.5.2') 
import groovyx.net.ws.WSClient 

def proxy = new WSClient("http://www.w3schools.com/webservices/tempconvert.asmx?WSDL", this.class.classLoader) 
proxy.initialize(); 

def result = proxy.CelsiusToFahrenheit(0) 
println "You are probably freezing at ${result} degrees Farhenheit" 

Ошибка сообщение:

SEVERE: Could not compile java files for http://www.w3schools.com/webservices/tempconvert.asmx?WSDL. 
Caught: java.lang.IllegalStateException: Unable to create JAXBContext for generated packages: Provider com.sun.xml.bind.v2.ContextFactory could not be instantiated: javax.xml.bind.JAXBException: "org.tempuri" doesnt contain ObjectFactory.class or jaxb.index 
java.lang.IllegalStateException: Unable to create JAXBContext for generated pack 
ages: Provider com.sun.xml.bind.v2.ContextFactory could not be instantiated: jav 
ax.xml.bind.JAXBException: "org.tempuri" doesnt contain ObjectFactory.class or j 
axb.index 
     at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:343) 
     at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:196) 
     at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:175) 
     at groovyx.net.ws.AbstractCXFWSClient.createClient(AbstractCXFWSClient.java:229) 
     at groovyx.net.ws.WSClient.initialize(WSClient.java:108) 
     at groovyx.net.ws.IWSClient$initialize.call(Unknown Source) 
     at TestService.run(TestService.groovy:5) 
Caused by: javax.xml.bind.JAXBException: Provider com.sun.xml.bind.v2.ContextFactory could not be instantiated: javax.xml.bind.JAXBException: "org.tempuri" doesnt contain ObjectFactory.class or jaxb.index - with linked exception: 
[javax.xml.bind.JAXBException: "org.tempuri" doesnt contain ObjectFactory.classor jaxb.index] 
     at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:340) 
     ... 6 more 
Caused by: javax.xml.bind.JAXBException: "org.tempuri" doesnt contain ObjectFactory.class or jaxb.index 
     at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:197) 
     ... 7 more 

Подсказка? Почему у меня должен быть jaxb.index?

Просто обнаружил, что проблема возникает с Java 1.7 (jdk1.7.0_21) ... это нормально при работе с Java 6 (jdk1.6.0_31)

Любой намек на работу с Java 7?

+0

Был ли мой ответ какой-либо помощью? – jesseplymale

ответ

2

Как указано на the GroovyWS page, GroovyWS в настоящее время неактивен. Вы могли бы сделать то же самое (хотя и с wordier синтаксиса) с помощью groovy-wslite library:

@Grab(group='com.github.groovy-wslite', module='groovy-wslite', version='0.8.0') 
import wslite.soap.* 

def client = new SOAPClient('http://www.w3schools.com/webservices/tempconvert.asmx') 
def response = client.send(SOAPAction:'http://tempuri.org/CelsiusToFahrenheit') { 
    body { 
     CelsiusToFahrenheit('xmlns':'http://tempuri.org/') { 
      Celsius('0') 
     } 
    } 
} 

def result = response.CelsiusToFahrenheitResponse.CelsiusToFahrenheitResult.text() 
println "You are probably freezing at ${result} degrees Farhenheit" 

Обратите внимание, что это требует, чтобы посмотреть на WSDL, чтобы получить SOAP сообщение имен, в отличие от версии GroovyWS кода. Но это работает!

+0

Приведенная ниже ошибка: org.codehaus.groovy.control.MultipleCompilationErrorsException: сбой при запуске: Общая ошибка при конверсии: ошибка захвата Виноград - [неразрешенная зависимость : com.github.groovy-wslite # groovy-wslite; 0.8.0 : not found] – pinei

+0

Только что настроенные свойства прокси и проблема была решена. Скрипт работает хорошо. Благодарю. – pinei

Смежные вопросы