我使用Log4j1.x通过Socket(在AsyncAppender中为SocketAppender)发送一些loggingEvent。
我在LoggingEvent消息中发送一个个人对象Serializable。
在电锯(服务器范围的示例)中,我想恢复我的个人对象。
我的问题:我无法实例化该消息。
错误 :
Exception in thread "Thread-5" java.lang.ClassCastException: java.lang.String cannot be cast to com.my.MyPersonnalObject
at org.apache.log4j.chainsaw.LoggingReceiver$Slurper.run(LoggingReceiver.java:80)
at java.lang.Thread.run(Unknown Source)
如何修复我的对象?
谢谢,
我找到了一种简单的方法。
重写MyPersonnalObject的toString以返回JSON值:
@Override
public String toString()
{
String str = "";
try
{
str = objectMapper.writeValueAsString(this);
} catch (JsonProcessingException e)
{
StringWriter errors = new StringWriter();
e.printStackTrace(new PrintWriter(errors));
str = "ERROR JSON" + errors.toString();
}
return str;
}
然后,在另一侧,使用:
public static MyPersonnalObject rescure(String jsonStr)
{
MyPersonnalObject b = null;
try
{
JsonParser jsonParser = jsonFactory.createParser(jsonStr);
b = objectMapper.readValue(jsonParser, MyPersonnalObject.class);
} catch (JsonParseException e)
{
e.printStackTrace();
} catch (IOException e)
{
e.printStackTrace();
}
return b;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句