[JAX-RPC SOAP] Konwersja RemoteException na SoapFault

0

Piszę w Javie SE klienta webapi do Allegro opartego o protokół SOAP i bibliotekę JAX-RPC z JWSDP.

Podobno specyfikacja web serwisów wymaga, by każda metoda rzucała wyjątkami klasy RemoteException i tu pojawia się mój problem. Nie wiem jak taki wyjątek skonwertować na SOAP Fault. Chcę mieć możliwość łatwego odczytania kodu błędu, wiadomości itp. Póki co jedyne co mogę sensownego zrobić to wywołać printStackTrace i zapisać logi, co nie jest zbyt eleganckim rozwiązaniem..

Przykładowy fragment kodu do pobrania salda rachunku Allegro:

    public String MyBilling()
    {
        try
        {
            return allegro.doMyBilling(this.sessionHandlePart);
        } catch (RemoteException ex)
        {
            ex.printStackTrace();
            logger.error("Can't retrieve billing. Exception message: {}", ex.getMessage());
            return "";
        }
    }

Oto co pokazuje printStackTrace w przypadku błędu:

java.rmi.RemoteException: Runtime exception; nested exception is: 
        deserialization error: XML reader error: unexpected character content: "doMyBilling - Wrong session"

Wg dokumentacji Allegro, wywoływana wyżej metoda może zwracać kody błędu: ERR_NO_SESSION, ERR_NO_DATABASE, ERR_SESSION_EXPIRED, ERR_BID_CANNOT_MASK. Niestety nie wiem jak się do nich dobrać, proszę o pomoc. </b>

0

Gdyby ktoś miał kiedyś podobny problem - rozwiązałem go poprzez zastosowanie innego frameworka. Powoli wdrażam Apache Axis, można tu w łatwy sposób zrzutować RemoteException na org.apache.axis.AxisFault i wywołać getFault...()

1 użytkowników online, w tym zalogowanych: 0, gości: 1