JAX-WS로 WebService를 개발 중입니다. 이 WebService에서, 나는 SOAP-오류로 "DatabaseQueryFault"가 :Struts2 애플리케이션에서 WebService Exception (SOAP-Fault)에 액세스하기
구현하는 자바 방법이 헤더public QueryResponseResultset executeCustomQuery(ExecuteCustomQuery parameters)
throws RemoteException, DatabaseQueryFault {
예외가 발생 될 때마다, 예를 들어 SQLException이있다
<wsdl:operation name="executeCustomQuery">
<wsdl:input message="tns:executeCustomQueryRequest"></wsdl:input>
<wsdl:output message="tns:executeCustomQueryResponse"></wsdl:output>
<wsdl:fault name="DatabaseQueryFault" message="tns:DatabaseQueryFault"></wsdl:fault>
</wsdl:operation>
<xsd:element name="databaseQueryFault" type="tns:databaseQueryFault" />
<xsd:complexType name="databaseQueryFault">
<xsd:sequence>
<xsd:element name="reason" type="xsd:string" minOccurs="0" />
</xsd:sequence>
</xsd:complexType>
, I 이 여기까지 아주 잘 작동
} catch (Exception e) {
throw new DatabaseQueryFault(e.getMessage());
}
: 내가 잘못된 쿼리를 보내는 경우, 나는 모든 t을 포함하여 DatabaseQueryFault를 포함하는 SOAP 응답을 내려면 DatabaseQueryFault로를 "변환" 그는 데이터
<soapenv>
<soapenv:Body>
<soapenv:Fault>
<faultcode>soapenv:Server.generalException</faultcode>
<faultstring></faultstring>
<detail>
<ns1:databaseQueryFault xmlns:ns1="http://daga/knowledgebase/webservice">
<reason>Unknown column 'test14' in 'field list'</reason>
</ns1:databaseQueryFault>
<ns2:exceptionName xmlns:ns2="http://xml.apache.org/axis/">
daga.knowledgebase.webservice.DatabaseQueryFault
</ns2:exceptionName>
<ns3:stackTrace xmlns:ns3="http://xml.apache.org/axis/">
하지만 지금 내 WebService에 클라이언트 :-) 문제가 Struts2 웹 응용 프로그램이되어 온다.
<global-exception-mappings>
<exception-mapping exception="java.lang.Exception" result="error" />
</global-exception-mappings>
지금 내 JSP 오류 페이지 내에서 내 비누 오류의 세부 사항에 액세스하기를 원하지만 필드가 비어 :이 나는 struts2의 기본 예외 처리 (struts.xml)를 사용
<p>
<s:property value="exception" /><br />
<s:property value="exception.message" /><br />
<s:property value="exception.reason" />
</p>
jsp 파일에서 WebService 예외 데이터에 액세스하려면 어떻게해야합니까?
내 Java 코드에서 WebService (JAX-WS)를 잡아두고 거기에 새로운 "일반적인"예외를 던져 내 S2 파일에서이 예외를 처리해야 함을 의미합니까? – strauberry
죄송합니다. 후속 조치를 놓쳤다. 더 많거나 적습니다. 예 - 예외가 SOAP 메시지에 캡슐화되었으므로 사용자가 SOAP 메시지를 만들지 않는 한 실제 애플리케이션 예외는 없습니다. 앱 예외가되어야하는지 아니면 정상적인 앱 오류 상태로보고되었는지 여부는 종종 선호되는 문제입니다. –