avro-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Scott Carey <sc...@richrelevance.com>
Subject Re: Schema <clinit> verify error in Tomcat 6
Date Thu, 30 Sep 2010 16:30:39 GMT
I think Jersey uses the Jackson JSON library, like Avro does.  The Schema class is the first
class in the chain that references jackson classes.  If the version of Jackson that Jersey
uses is old enough, that might be the problem.  Its version likely comes first in the classpath.
  Some of the 1.0.x Jackson versions are known to be incompatible with later Jackson 1.x versions.

The trace below is cryptic, but the first place I would look would be a jar file conflict
in a common dependeny.


On Sep 29, 2010, at 7:30 PM, Ta-Chung Tsai wrote:

We've developed a web service using Jersey and used Avro HTTPTransceiver as a RPC to fetch
some status from a server.
However, after deploying on Tomcat6, I got the following error, no matter what protocols I
used.

java.lang.VerifyError: (class: org/apache/avro/Schema, method: <clinit> signature: ()V)
Incompatible argument to function
at org.apache.avro.ipc.Requestor.<clinit>(Requestor.java:50)
at main.com.trendmicro.wrs.region_ptn.TestResource.getRes(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:165)
at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:67)
at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:276)
at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:83)
at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:133)
at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:71)
at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1171)
at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1103)
at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1053)
at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1043)
at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:406)
at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:477)
at com.sun.jersey.spi.container.servlet.ServletContainer.doFilter(ServletContainer.java:833)
at com.sun.jersey.spi.container.servlet.ServletContainer.doFilter(ServletContainer.java:806)
at com.sun.jersey.spi.container.servlet.ServletContainer.doFilter(ServletContainer.java:767)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:619)


My test program is as follows:

@Path("/testavro")
public class TestResource {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String getRes()
{
try {
HttpTransceiver client = new HttpTransceiver(new URL("http://serverURL:10080<http://10.1.112.159:10080/>"));
Region proxy = (Region) SpecificRequestor.getClient(Region.class, client);
Stat ret = proxy.getTest("id");
return "ok";
} catch (MalformedURLException e) {
return "malformedURL:" + e;
} catch (IOException e) {
return "ioException: " + e;
}
}
}

If I put the same program in main(), it can be executed smoothly without exception. I am sure
the classpath is correct by deleting avro-1.3.3.jar.
The same problem occurs in both avro-1.3.3 and avro-1.4.0.
Do I miss something here?

---
Terry Tsai


Mime
View raw message