小编Ali*_*ziz的帖子

Tomcat 7 - java.lang.NoClassDefFoundError:org/apache/log4j/spi/ThrowableInformation

我面临以下例外:

Mar 26, 2012 1:20:34 PM org.apache.catalina.loader.WebappClassLoader loadClass
INFO: Illegal access: this web application instance has been stopped already.  
Could not   load org.apache.log4j.spi.ThrowableInformation.  
The eventual following stack trace is caused by an error thrown for debugging purposes 
as well as to attempt to terminate the thread which caused the illegal access, and has  
no functional impact.
java.lang.IllegalStateException
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1562)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)
at org.apache.log4j.spi.LoggingEvent.<init>(LoggingEvent.java:165)
at org.apache.log4j.Category.forcedLog(Category.java:391)
at org.apache.log4j.Category.error(Category.java:322)
at com.abc.supervisionmanager.Monitoring.run(Monitoring.java:205)
at java.lang.Thread.run(Thread.java:662)
Exception in thread "Thread_Monitoring" java.lang.NoClassDefFoundError: org/apache/log4j/spi/ThrowableInformation
at org.apache.log4j.spi.LoggingEvent.<init>(LoggingEvent.java:165)
at …
Run Code Online (Sandbox Code Playgroud)

java log4j tomcat7

15
推荐指数
2
解决办法
5万
查看次数

可以使用avro的逻辑类型来验证输入数据吗?

我试图了解应该如何使用avro的逻辑类型。首先,让我举例说明我要达到的目标。我想写一个新的Logical Type(RegExLogicalType)来验证输入字符串并接受它或引发一些异常。

或让我们说说我期望以这种方式使用的现有受支持的avro逻辑类型(十进制)之一:

  1. 如果指定了无效的十进制逻辑类型,则必须引发异常。类似于当需要强制字段但未提供任何内容时org.apache.avro.AvroRuntimeException: Field test_decimal type:BYTES pos:2 not set and has no default value
  2. 如果指定了有效的十进制逻辑类型,则不会引发异常。

我在文档中找到的只是谈论读/反序列化,而我不知道写/反序列化

语言实现在读取时必须忽略未知的逻辑类型,并应使用基础的Avro类型。如果逻辑类型无效,例如小数位数大于其精度的小数位数,则实现应忽略该逻辑类型并使用基础的Avro类型。

我不希望上面提到的序列化/反序列化行为,我需要有一些与XSD限制(模式)等效的东西,用于根据模式验证数据

如果架构如下,则显示在avro中

{"namespace": "com.stackoverflow.avro",
 "type": "record",
 "name": "Request",
 "fields": [
     {"name": "caller_jwt",  "type": "string", "logicalType": "regular-expression", "pattern": "[a-zA-Z0-9]*\\.[a-zA-Z0-9]*\\.[a-zA-Z0-9]*"},
     {"name": "test_decimal", "type": "bytes", "logicalType": "decimal",  "precision": 4,  "scale": 2}
 ]
}
Run Code Online (Sandbox Code Playgroud)

如果我尝试构建一个对象并将其序列化为:

DatumWriter<Request> userDatumWriter = new SpecificDatumWriter<>(Request.class);
DataFileWriter<Request> dataFileWriter = new DataFileWriter<>(userDatumWriter);

ByteBuffer badDecimal = ByteBuffer.wrap("bad".getBytes());

Request request = Request.newBuilder()
            .setTestDecimal(badDecimal) // bad decimal
            .setCallerJwt("qsdsqdqsd").build(); // bad value according to …
Run Code Online (Sandbox Code Playgroud)

java serialization avro deserialization

5
推荐指数
0
解决办法
701
查看次数

标签 统计

java ×2

avro ×1

deserialization ×1

log4j ×1

serialization ×1

tomcat7 ×1