Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Работа с сетью > Dozer


Автор: 1sanek1 9.6.2012, 08:31
Добрый день! 
Я пишу сервис и у меня возникла следующая проблема. 
Я с помощью hibernate получаю данные из БД. Заполняется коллекция, например DC_LOGIN (Правда я экспериментировал на др. коллекции, там был тип java.util.Calendar, но я думаю это не принципиально...) 
Код

/**
 * DC_LOGIN.java
 *
 * This file was auto-generated from WSDL
 * by the Apache Axis 1.2.1 Jun 14, 2005 (09:15:57 EDT) WSDL2Java emitter.
 */

package den.serv.hibernate.form;

public class DC_LOGIN  extends den.serv.hibernate.form.item.DC_GETON  implements java.io.Serializable {
    private java.lang.String LOGIN;
    private java.lang.String PASSWORD;

    public DC_LOGIN() {
    }

    public DC_LOGIN(
           java.lang.String LOGIN,
           java.lang.String PASSWORD) {
           this.LOGIN = LOGIN;
           this.PASSWORD = PASSWORD;
    }


    /**
     * Gets the LOGIN value for this DC_LOGIN.
     * 
     * @return LOGIN
     */
    public java.lang.String getLOGIN() {
        return LOGIN;
    }


    /**
     * Sets the LOGIN value for this DC_LOGIN.
     * 
     * @param LOGIN
     */
    public void setLOGIN(java.lang.String LOGIN) {
        this.LOGIN = LOGIN;
    }


    /**
     * Gets the PASSWORD value for this DC_LOGIN.
     * 
     * @return PASSWORD
     */
    public java.lang.String getPASSWORD() {
        return PASSWORD;
    }


    /**
     * Sets the PASSWORD value for this DC_LOGIN.
     * 
     * @param PASSWORD
     */
    public void setPASSWORD(java.lang.String PASSWORD) {
        this.PASSWORD = PASSWORD;
    }

    private java.lang.Object __equalsCalc = null;
    public synchronized boolean equals(java.lang.Object obj) {
        if (!(obj instanceof DC_LOGIN)) return false;
        DC_LOGIN other = (DC_LOGIN) obj;
        if (obj == null) return false;
        if (this == obj) return true;
        if (__equalsCalc != null) {
            return (__equalsCalc == obj);
        }
        __equalsCalc = obj;
        boolean _equals;
        _equals = super.equals(obj) && 
            ((this.LOGIN==null && other.getLOGIN()==null) || 
             (this.LOGIN!=null &&
              this.LOGIN.equals(other.getLOGIN()))) &&
            ((this.PASSWORD==null && other.getPASSWORD()==null) || 
             (this.PASSWORD!=null &&
              this.PASSWORD.equals(other.getPASSWORD())));
        __equalsCalc = null;
        return _equals;
    }

    private boolean __hashCodeCalc = false;
    public synchronized int hashCode() {
        if (__hashCodeCalc) {
            return 0;
        }
        __hashCodeCalc = true;
        int _hashCode = super.hashCode();
        if (getLOGIN() != null) {
            _hashCode += getLOGIN().hashCode();
        }
        if (getPASSWORD() != null) {
            _hashCode += getPASSWORD().hashCode();
        }
        __hashCodeCalc = false;
        return _hashCode;
    }

}


Я хочу с помощью Dozer отвязать весь мусор от объекта, что бы передать информацию по сети. 
Код

DC_LOGIN bean = new DC_LOGIN();
bean = (DC_LOGIN) DozerBeanMapperSingletonWrapper.getInstance().map(incomingItem, DC_LOGIN.class);

incomingItem - объект с данными полученными из БД. 

но при обращении в этой строчке, возникает ошибка в самой библиотек, причем в логе ничего не пишется. Ошибку даже не удается отловить с помощью try{...}catch(Exception e){} 
Единственное что пишет лог - это 
Код

[08.06.12 16:13:49:851 MSD] 00000030 GlobalSetting I org.dozer.util.InitLogger log Trying to find Dozer configuration file: dozer.properties

Но вроде dozer.properties - это необязательный файл конфигурации, я полагаю это штатное сообщение. А вот я еще видел в примере есть файл dozerBeanMapping - для чего он нужен? Куда его ложить? Обязательно его использовать? Или может еще надо что нибудь указывать для работы с библиотекой dozer. 
В общем я в замешательстве, не знаю куда копать. Не подскажите может я что то не так делаю? Буду очень признателен.

Автор: 1sanek1 9.6.2012, 10:41
Может какой нибудь библиотеки не хватает?

Автор: LSD 11.6.2012, 16:49
Цитата(1sanek1 @  9.6.2012,  09:31 Найти цитируемый пост)
но при обращении в этой строчке, возникает ошибка в самой библиотек, причем в логе ничего не пишется. Ошибку даже не удается отловить с помощью try{...}catch(Exception e){} 

1. Если ошибку не удалось отловить то как ты о ней вообще узнал?
2. А если попробовать catch(Throwable e)?
3. И:
Цитата
What are the best ways to debug Dozer?

You can specify the -Ddozer.debug system property to view the one time initialization information.

Автор: 1sanek1 13.6.2012, 11:44
Цитата

 Если ошибку не удалось отловить то как ты о ней вообще узнал?

Я ставил для простоты System.out с двух сторон строчки: bean = (DC_LOGIN) DozerBeanMapperSingletonWrapper.getInstance().map(incomingItem, DC_LOGIN.class); Первый  System.out попадал в лог второй нет. Сейчас на логирование уду менять.))

Цитата

 А если попробовать catch(Throwable e)?

Вот за это огромное СПАСИБО!)) Помогло! Отловил эксепшен. Не хватало нескольких библиотек: commons-beanutils-1.8.2.jar, commons-beanutils-1.8.2-sources.jar и apache-commons-lang.jar
Странно, почему catch(Exception e) - ни чего не отлавливал)) 

Теперь все заработало. Спасибо! 

Автор: AlexeyVorotnikov 14.6.2012, 09:17
Цитата(1sanek1 @  13.6.2012,  12:44 Найти цитируемый пост)
Странно, почему catch(Exception e) - ни чего не отлавливал))

У класса Throwable есть два наследника: Exception и Error.
catch(Exception e) ловит только Exception'ы и не ловит Error'ы.
 У вас сколее всего выкидывался какой-то наследник класса Error, например, NoClassDefFoundError.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)