Я использую подпружиненную партию с Jdbc и Postgres DB. все данные о выполнении задания и шага сохраняются в таблицах, созданных с помощью пакетного режима в БД PostgreS.
Я использую его для сохранения некоторых данных контекста шага, которые сохраняются в таблице batch_step_execution_context в столбце SERIALIZED_CONTEXT.
Данные, которые я сохраняю, содержат несколько символов MBCS.
но я вижу, что при записи данных в таблицу и чтении из нее используется кодировка ISO-8859-1.
следовательно, мои символы mbcs, хотя и сериализованные сериализатором по умолчанию Xstream, сохраняются как мусор.
любой способ обойти это, чтобы я мог получать и сохранять данные как MBCS.
пожалуйста, найдите фрагмент кода из JDBCExecutionContextDao.
private String serializeContext(ExecutionContext ctx) {
Map<String, Object> m = new HashMap<String, Object>();
for (Entry<String, Object> me : ctx.entrySet()) {
m.put(me.getKey(), me.getValue());
}
ByteArrayOutputStream out = new ByteArrayOutputStream();
String results = "";
try {
serializer.serialize(m, out);
results = new String(out.toByteArray(), "ISO-8859-1");
}
catch (IOException ioe) {
throw new IllegalArgumentException("Could not serialize the execution context", ioe);
}
return results;
}
private class ExecutionContextRowMapper implements RowMapper<ExecutionContext> {
@Override
public ExecutionContext mapRow(ResultSet rs, int i) throws SQLException {
ExecutionContext executionContext = new ExecutionContext();
String serializedContext = rs.getString("SERIALIZED_CONTEXT");
if (serializedContext == null) {
serializedContext = rs.getString("SHORT_CONTEXT");
}
Map<String, Object> map;
try {
ByteArrayInputStream in = new ByteArrayInputStream(serializedContext.getBytes("ISO-8859-1"));
map = serializer.deserialize(in);
}
catch (IOException ioe) {
throw new IllegalArgumentException("Unable to deserialize the execution context", ioe);
}
for (Map.Entry<String, Object> entry : map.entrySet()) {
executionContext.put(entry.getKey(), entry.getValue());
}
return executionContext;
}
}
Я ожидаю, что буду хранить и извлекать данные MBC.