在REST调用中使用Wicket

时间:2015-08-27 13:16:41

标签: java rest wicket resteasy

所以我最近开始使用Wicket,并尝试使用RestEasy对端点设置进行REST调用。我可以拨打电话,可以看到它成功点击,但在尝试使用Wicket组件时,我收到以下错误...

org.apache.wicket.WicketRuntimeException: There is no application attached to current thread

我假设这是因为我通过Wicket管理的点进入应用程序。我试图通过忽略Wicket解决这个问题,但它与我们的数据紧密耦合,我无法在不重写大量现有代码的情况下找到解决方法。

有没有一种方法可以告诉Wicket它需要管理这个端点,还是我可以在我的REST服务中获取应用程序上下文的方式?

这里有一些相关的代码。

@POST
@Path("/generate/{num}")
@Produces("text/plain")
@RolesAllowed({
        AuthorizeRole.ROLE
})
public Response generate(@PathParam("num") String num) throws Exception {
    Response response;
    Type incomingType = getType(reportBn);

    if(!incomingType.equals(Type.type)) {
        response = Response.status(Response.Status.BAD_REQUEST).entity("Could not process request").build();
        return response;
    }

    SomeObject newObj = new SomeObject(num);

    //This will cause the error, but it's actually 
    //getting called later, this is just to show why it's thrown.
    Application.get();

    response = Response.ok(newObj.getNum()).build();
    return response;
}

2 个答案:

答案 0 :(得分:1)

虽然您已经找到了一种与我分享官方/设计方式的方法:https://github.com/apache/wicket/blob/master/wicket-core/src/main/java/org/apache/wicket/protocol/http/servlet/WicketSessionFilter.java 只需确保WicketSessionFilter在RestEasy的Filter / Servlet周围执行。

额外的好处是您也可以访问Wicket的会话。

答案 1 :(得分:0)

所以经过几个小时的研究而没有找到线索我以为我会尝试一些疯狂的事情。使用Spring db.ped.aggregate([ { $match: { "DOB-Year": 2014 } }, { $group: { _id: { "Breeder": "$Breeder", "DOB": "$DOB" }, "count": { $sum: 1 } } }, { $group: { _id: { "Breeder": "$_id.Breeder" }, "count": { $sum: 1 } } }, { $sort: { "count": -1 } }, { $limit: 15 } ]); @Autowired连接到我的班级。 Aaaa和它有效......这就是为什么......

在我们的Spring设置中,我们将Application定义为bean,就像这样......

Application

我们使用自定义应用程序类,因此我不确定其他设置会是什么样子,但它就像一个魅力!

希望这可以帮助将来的某个人!