我在向java webservice發出請求時收到上述消息。Webservice返回java.lang.reflect.InvocationTargetException
我們最初創建了一個Java控制檯應用程序並手動提交了一個xml文件。將其作爲Java應用程序運行時,通過使用System.out.println成功創建並顯示響應。我們通過選擇包含方法的java文件並選擇「create webservice」來指定要創建Web服務的動態項目以及要公開的方法來創建Web服務。
哪些應用程序正在做的是一個XML文件,並使用解組此爲一個對象:
public static Object unmarshalToObject(Class classToBeBound,
String xmlRequest) {
Object obj = new Object();
try {
JAXBContext jc = JAXBContext.newInstance(classToBeBound);
Unmarshaller um = jc.createUnmarshaller();
obj = um.unmarshal(new StringReader(xmlRequest));
} catch (Exception e) {
e.printStackTrace()
}
return obj;
}
一些處理上的文件進行,然後將對象編組到XML如下:
public static String marshalToXML(Object data) {
StringWriter sw = new StringWriter();
try {
logger.info("Create new Marshall");
JAXBContext jc = JAXBContext.newInstance("ContextPathName");
logger.info("Marshalled to xmlObjects");
Marshaller marshaller = jc.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true);
marshaller.marshal(data, sw);
} catch (Exception e) {
logException(logger, e);
}
return sw.toString();
}
的在此之前的下面是代碼似乎記錄器顯示消息是造成問題的行:
JAXBContext jc = JAXBContext.newInstance("ContextPathName");
的Web服務不會繼續執行下一行 - 以下是SOAP消息的正文:
<soapenv:Fault>
<faultcode>soapenv:Server.userException</faultcode>
<faultstring>java.lang.reflect.InvocationTargetException</faultstring>
<detail>
<ns1:hostname xmlns:ns1="http://xml.apache.org/axis/">servername</ns1:hostname>
</detail>
</soapenv:Fault>
我已經添加的try/catch圍繞這部分代碼甚至遠找JAXBExceptions但這樣做似乎沒有捕捉到任何東西 - 一般的例外也沒有。
運行控制檯應用程序時不會發生此問題。造成這種情況的構建路徑包括太陽\ JWSDP-2.0以下內容\ JAXB \ lib目錄下:
jaxb-api.jar
jsr173_1.0_api.jar
jaxb-impl.jar
我已經添加了這些在動態項目的WEB-INF文件lib文件夾。
我正在JBuilder 2008 R2中運行webservice並使用SOAPUI提交請求 - 這指向創建webservice時生成的wsdl。
如果任何人有任何幫助或想法如何解決這個問題,他們可以請回復 - 感謝您花時間閱讀這篇文章!
SOAP錯誤指示服務器上的錯誤,一個沒有正確處理和報告。這可能是由您的請求中的錯誤導致的,但是如果沒有正確的錯誤報告,就不能說明它是什麼。 – skaffman 2010-06-08 19:30:31
你有沒有解決你的問題? – 2011-06-22 15:10:28