в теме.
ел бы сохранять данные внедренного 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.