서버에서 호스팅되는 일련의 웹 서비스가 있습니다.래퍼 라이브러리를위한 예외 클래스 디자인하기
본인은 웹 서비스 (java org.apache.axis.wsdl.WSDL2Java http://whatever1?wsdl, java org.apache.axis.wsdl.WSDL2Java http://whatever2?wsdl
등)
이 내가 jar 파일을 만들 수있는 많은 클래스를 생성하기위한 클래스 및 스텁을 생성하는 축을 사용합니다.
특정 프로젝트의 경우, jar의 다른 클래스를 사용하여 3 가지 작업을 수행하는 래퍼 클래스를 만들어야합니다. 이것은 자루에있는 모든 다른 클래스를 추상화하는 것입니다. & 현재 3 가지 다른 작업을 수행하기 위해 3 가지 다른 메소드를 호출하는 1 클래스가 있습니다.
랩퍼 클래스에 대한 코딩을 완료했지만 웹 서비스 클라이언트 jar 파일에서 발생한 예외를 처리하는 방법에 대해 매우 혼란 스럽습니다.
내 래퍼의 클라이언트가 원래 웹 서비스 클라이언트 jar의 클래스를 알 필요가 없다는 것이 하나의 요구 사항입니다. 그래서 래퍼 항아리 이외에 몇 가지 예외 클래스를 추가로 작성해야합니다. WebService에 클라이언트 항아리
차례에org.apache.axis.AxisFault
로부터 유도
WSException
에서 유래 모두 사용자 정의 예외 클래스 3-4 상이한 타입 (I 클라이언트 항아리를 생성하도록 축을 사용하고 있기 때문이다)가있다.
이제는 예외 클래스를 어떻게 디자인 할 수 있는지 알아 내려고 노력하고 있습니다. 래퍼를 호출하는 코드가 웹 서비스 클라이언트를 직접 호출하는 경우 가질 수있는 정보를 잃지 않도록합니다.
세 가지 다른 작업을 수행하는 래퍼에 3 가지 방법 (예 : m1, m2, m3)이 있으므로 3 가지 예외 클래스 (m1exc, m2exc, m3exc)가 있다고 생각했습니다.
이
은, 내가 모든 것을 할 수 &WSException
를 잡을 것이다 어디 시도의 catch 블록을 것, 래퍼 코드에서
class Wrap
{
void m1() throws m1exc, javax.xml.rpc.ServiceException, java.rmi.RemoteException
{
try
{
// call stuff from the webservice client jar to get things done
}
catch(WSException w)
{
throw new m1exc(w);
}
}
}
것 내 래퍼에서 샘플 예외 클래스
public class m1exc
{
WSException ws;
public m1exc(WSException e)
{
ws = e;
}
public String toString()
{
return ws.toString();
}
// Returns the error code
public int getCode()
{
return ws.getCode();
}
}
입니다 그렇지 않으면 통과합니다.
이 전략이 올바른 것 같습니까? 이것을 수행하는 더 좋은 방법이 있습니까? 주요 기준은 내 래퍼를 호출하는 코드가 예외 정보를 잃지 않아야한다는 것입니다. 이 목적을위한 표준 설계가 있습니까?
확실하지 - 나는 단지에서 여러 클래스를 사용하고 대신 1 개 클래스를 사용의 복잡성에서 그들을 보호하기 위해 찾고 있어요 - 내 래퍼 및 관련 예외. 내 주요 관심사는 달리 사용할 수있는 예외 정보를 잃고 싶지 않다는 것입니다. 나는 위의 변화가 나를 어떻게 돕는 지 아직도 명확하지 않다. – user93353
래퍼가 WSException 클래스를 사용하기 때문에 래퍼를 사용하는 모든 코드에서 클래스 패스에 액세스 할 수 있어야합니다. "내 랩퍼의 클라이언트가 원래 웹 서비스 클라이언트 항아리의 클래스를 알 필요가 없다"고 말할 때 원하는 내용이라고 생각합니다. – dsc
m1exc 클래스에서 WSException 객체를 private로 만들 수 있습니다. 그러면 클라이언트는 그것에 대해 알 필요가 없습니다. – user93353