1
试图在Scala中实现JAX-RS资源。这个我的Java版本具有以下类型签名:RESTEasy无法在scala类上调用我的注释方法
@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) {
斯卡拉版本是这样的:
@GET
@Path(value="echo")
@Produces(Array("application/json"))
def get() = {
@QueryParam("param") param:String,
@QueryParam("asOf") @DefaultValue(NOW) asOf:DateWrapper,
@QueryParam("httpError") @DefaultValue("200") httpError:java.lang.Integer,
@QueryParam("httpErrorMessage") @DefaultValue("") httpErrorMessage:String,
@QueryParam("fail") @DefaultValue("false") fail:java.lang.Boolean):java.util.Map[String,Object] = {
当我开始了我的申请,我得到的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 [email protected],
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端点命中)