RESTEasy无法在scala类上调用带注释的方法
尝试在Scala中实现JAX-RS资源。我的Java版本具有以下类型签名:RESTEasy无法在scala类上调用带注释的方法,scala,resteasy,Scala,Resteasy,尝试在Scala中实现JAX-RS资源。我的Java版本具有以下类型签名: @GET @Path(value="echoold") @Produces("application/json") public Map<String,Object> get( @QueryParam("param") String param, @QueryParam("asOf") @DefaultValue(NOW) DateWrapper asOf, @
@GET
@Path(value="echoold")
@Produces("application/json")
public Map<String,Object> get(
@QueryParam("param") String param,
@QueryParam("asOf") @DefaultValue(NOW) DateWrapper asOf,
@QueryParam("httpError") @DefaultValue("200") int httpError,
@QueryParam("httpErrorMessage") @DefaultValue("") String httpErrorMessage,
@QueryParam("fail") @DefaultValue("false") boolean fail) {
当我启动我的应用程序时,我从RESTEasy中得到了一个奇怪的错误,我已将其格式化为可读性:
org.jboss.resteasy.spi.InternalServerErrorException:
Bad arguments passed to
public java.util.Map opower.api.endpoint.echo.Echo.get(java.lang.String,
opower.api.support.DateWrapper,
java.lang.Integer,
java.lang.String,
java.lang.Boolean)
( java.lang.String someValue,
opower.api.support.DateWrapper opower.api.support.DateWrapper@28a34522,
java.lang.Integer 400,
java.lang.String This is the message,
java.lang.Boolean false )
基本例外是:
Caused by: java.lang.IllegalArgumentException: object is not an instance of declaring class
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 org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:140)
现在,这个类是通过Spring配置的,所以它可能是一个疯狂的代理类,它变得一团糟,但是还有人见过这样的吗
如果您不知道RESTEasy/JAX-RS在做什么,那么容器RESTEasy基本上会在类上查找具有这些注释的方法,然后在命中某些URL端点时调用这些方法 需要更改中的代理目标类
<tx:annotation-driven transaction-manager="txManager"
mode="proxy" proxy-target-class="true"/>
代理目标类的默认值为false。它需要类路径中的cglib
我想mode=acpectj可能也能工作,但我没有尝试
<tx:annotation-driven transaction-manager="txManager"
mode="proxy" proxy-target-class="true"/>