в теме.

ел бы сохранять данные внедренного bean-компонента с различным состоянием через различные интервалы: изменение - сохранение - изменение - сохранение ... Я использую сериализацию ядра, и проблема в том, что все байтовые массивы одинаковы. я считаю, что прокси сериализуется, потому что, если я десериализую один из массивов позже, я получу текущее состояние компонента.

Пример сериализации, не фиксирующей изменения в bean-компоненте:

@Stateful
@RequestScoped
public class State implements Serializable {

    private static final long serialVersionUID = 1L;

    @Inject
    StatelessBean bean; // assume it's needed

    private List<String> list = new ArrayList<>();

    public void add() {
        list.add("S");
    }
}

И это класс JAX-RS:

@Stateless
@Path("t1")
public class ChickensResource {

    @Inject
    State state;

    @GET
    @Path("/test")
    public String test() {
        state.add();
        byte[] b0 = serialize(state);
        System.out.println(b0.length + " " + Arrays.toString(b0));
        state.add();
        byte[] b1 = serialize(state);
        System.out.println(b1.length + " " + Arrays.toString(b1)); // prints same as b0
        System.out.println(b0.length + " " + Arrays.toString(b0)); // prints same thing
    }

    public static <T extends Serializable> byte[] serialize(T s) {
        try (ByteArrayOutputStream bos = new ByteArrayOutputStream();
             ObjectOutputStream oos = new ObjectOutputStream(bos))
        {
            oos.writeObject(s);
            return bos.toByteArray();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
}

Что я хочу сделать, это только сохранить список вState поскольку это соответствующие данные. Я также попробовал сериализацию JSON, и это далоIOExceptionЯ пытаюсь сериализации ядра.

Использование JavaEE7 и Wildfly 10.1.

Ответы на вопрос(0)

Ваш ответ на вопрос