Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Передаю объект сущности в EJB-модуль, а поля сущности теряются. / 7 сообщений из 7, страница 1 из 1
24.04.2012, 11:43:32
    #37767810
Niky4000
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передаю объект сущности в EJB-модуль, а поля сущности теряются.
Есть вот такой вот простенький клиент:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
public class Main {
    @EJB
    private static TempXmlSluchErrorFacadeRemote tempXmlSluchErrorFacade;

    public static void main(String[] args) {
        TempXmlSluchError SluchError2=new TempXmlSluchError();
        SluchError2.setIdSchet("T");
        SluchError2.setIdSluch("T");
        SluchError2.setImPol("R");
        TempXmlSluchError SluchError3=tempXmlSluchErrorFacade.trans(SluchError2);
        System.out.println("Success! "+SluchError3.getImPol()+" Hello!");
    }
}


TempXmlSluchError - сущность сериализуемая, по идее.
Код EJB:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
import EntityPack.TempXmlSluchError;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

@Stateless
public class TempXmlSluchErrorFacade extends AbstractFacade<TempXmlSluchError> implements TempXmlSluchErrorFacadeLocal, TempXmlSluchErrorFacadeRemote {
    @PersistenceContext(unitName = "Server-ejbPU")
    private EntityManager em;

    @Override
    protected EntityManager getEntityManager() {
        return em;
    }

    public TempXmlSluchErrorFacade() {
        super(TempXmlSluchError.class);
    }

    @Override
    public TempXmlSluchError trans(TempXmlSluchError txse) {
        txse.setOshib(Short.valueOf((short)7));
        return txse;
    }



В отладчике под NetBeans'ом вывод клиента такой:
Код: sql
1.
Success! R Hello!



А если это где-то развернуть (да и на localhost тоже самое):
Код: sql
1.
2.
asadmin --host 172.16.1.250 deploy --retrieve D:\stubs --force D:\My.ear
appclient -targetserver 172.16.1.250 -jar D:\MyClient.jar


То получается вот так:
Код: sql
1.
Success! null Hello!


То есть по каким-то неведомым причинам значения полей сущности теряются!
Почему это происходит и как это обойти???
...
Рейтинг: 0 / 0
24.04.2012, 12:32:33
    #37767938
Niky4000
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передаю объект сущности в EJB-модуль, а поля сущности теряются.
А вот создал такой класс:
Код: sql
1.
2.
3.
4.
5.
6.
public class SomeObject implements Serializable{
    public String some_Str;
    public int some_int;
    public BigDecimal some_BigDecimal;
    public Short some_Short;
}


Вот код клиента:
Код: sql
1.
2.
3.
4.
5.
6.
7.
        SomeObject so=new SomeObject();
        so.some_BigDecimal=BigDecimal.TEN;
        so.some_Short=Short.MIN_VALUE;
        so.some_Str="Hello from some";
        so.some_int=12;
        SomeObject so2=tempXmlSluchErrorFacade.testSomeObject(so);
        System.out.println(" "+so2.some_Str+" ");


Вот код метода testSomeObject EJB-модуля:
Код: sql
1.
2.
3.
4.
5.
    @Override
    public SomeObject testSomeObject(SomeObject so) {
        so.some_Str+=" HHH!";
        return so;
    }


Вывод после
Код: sql
1.
2.
asadmin --host 172.16.1.250 deploy --retrieve D:\stubs --force D:\My.ear
appclient -targetserver 172.16.1.250 -jar D:\MyClient.jar


такой:
Код: sql
1.
Hello from some  HHH!


То есть работает.
Но это не сущность, а обычный объект, который реализует интерфейс Serializable. Сущность тоже его реализует, но почему-то как-то "криво" передаётся.
Почему не понятно...
...
Рейтинг: 0 / 0
24.04.2012, 13:05:54
    #37768053
maratische
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передаю объект сущности в EJB-модуль, а поля сущности теряются.
Niky4000,

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
public class SomeObject implements Serializable {
    private String someStr;
    private int someint;
    private BigDecimal someBigDecimal;
    private Short someShort;

set....
get...
}
...
Рейтинг: 0 / 0
24.04.2012, 13:16:08
    #37768084
Niky4000
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передаю объект сущности в EJB-модуль, а поля сущности теряются.
maratische
Не, ну, это понятно. Я для простоты так написал...
Я просто хотел проиллюстрировать что сущность не передаётся, а экземпляр обычного несущностного класса передаётся.
...
Рейтинг: 0 / 0
24.04.2012, 13:35:39
    #37768125
Niky4000
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передаю объект сущности в EJB-модуль, а поля сущности теряются.
Хм!
Я обнаружил очень странную вещь!
Если сущность "под контролем" Persistence unit, то у клиента можно создать её экземпляр, менять поля, но ПОЧЕМУ-ТО по приходу к EJB-модулю она становится пустой!
А если сущность не "под контролем" Persistence unit, то всё нормально - сущность приходит к EJB-модулю нормальная, EJB-модуль может с ней что-то сделать (как-то изменить) и при отправке назад она тоже доходит в норме!
Почему так? Не понятно!
А почему под NetBeans'ом всё работает - загадка! NetBeans вообще загадка! Как он ухитряется запускать то что не запускается не понятно!
...
Рейтинг: 0 / 0
24.04.2012, 13:50:43
    #37768153
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передаю объект сущности в EJB-модуль, а поля сущности теряются.
Может у вас там прокси на самом деле? Что значит "под контролем"?
...
Рейтинг: 0 / 0
24.04.2012, 16:34:14
    #37768670
Niky4000
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передаю объект сущности в EJB-модуль, а поля сущности теряются.
Я имею ввиду это:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
  <persistence-unit name="IMCRootUploader-ejbPU" transaction-type="...">
    <jta-data-source>medfin_con</jta-data-source>
    <class>EntityPack.TempXmlDs</class>
...
...
...
    <class>EntityPack.TempXmlZglv</class>
    <exclude-unlisted-classes>true</exclude-unlisted-classes>
    <shared-cache-mode>NONE</shared-cache-mode>
    <validation-mode>NONE</validation-mode>
    <properties/>
  </persistence-unit>
</persistence>


Если класс прописан в теге <class>.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Передаю объект сущности в EJB-модуль, а поля сущности теряются. / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]