最近在call restful webService的时候遇到问题,并没有跳转到我想调用的方法里面去。比如我明明call的是add()方法,结果它跳到了delete()方法里面去。还有就是在同一次session里面,我无论call什么方法,它调用的都是同一个方法(而且我测试下来这个方法是随机的-_-#).
主程序是这样:
restfulService里面是这样:
我的解决方案有两个方面。第一,在两个service里面的方法上,都加上path这个annotation:
这样在call service方法的时候它就不会乱跳了。
第二,每次call完都关掉代理:
主程序是这样:
try{ ClientRequestFactory crf = new ClientRequestFactory(); Test test = = crf.createProxy(InvokerService.class,url); restfulService.add();//call service方法 } catch(Exception e){ e.printstacktrace(); }
InvokerService里是这样:
@POST @Consumes() @Produces(MediaType.APPLICATION_JSON) public void add(); @POST @Consumes() @Produces(MediaType.APPLICATION_JSON) public void delete();
restfulService里面是这样:
@Inject Utils utils; @POST @Consumes() @Produces(MediaType.APPLICATION_JSON) public void add() { try { utils.add(); } catch (Exception e) { e.printstacktrace(); } } @POST @Consumes() @Produces(MediaType.APPLICATION_JSON) public void delete() { try { utils.delete(); } catch (Exception e) { e.printstacktrace(); } }
我的解决方案有两个方面。第一,在两个service里面的方法上,都加上path这个annotation:
@POST @Consumes() @Produces(MediaType.APPLICATION_JSON) @Path("/add")//增加annotation public void add(); @POST @Consumes() @Produces(MediaType.APPLICATION_JSON) @Path("/delete")//增加annotation public void delete(); @POST @Consumes() @Produces(MediaType.APPLICATION_JSON) @Path("/add")//增加annotation public void add() { try { utils.add(); } catch (Exception e) { e.printstacktrace(); } } @POST @Consumes() @Produces(MediaType.APPLICATION_JSON) @Path("/delete")//增加annotation public void delete() { try { utils.delete(); } catch (Exception e) { e.printstacktrace(); } }
这样在call service方法的时候它就不会乱跳了。
第二,每次call完都关掉代理:
@POST @Consumes() @Produces(MediaType.APPLICATION_JSON) @Path("/add")//增加annotation public void add(); @POST @Consumes() @Produces(MediaType.APPLICATION_JSON) @Path("/delete")//增加annotation public void delete(); @POST @Consumes() @Produces(MediaType.APPLICATION_JSON) @Path("/add")//增加annotation public void add() { try { utils.add(); } catch (Exception e) { e.printstacktrace(); } } @POST @Consumes() @Produces(MediaType.APPLICATION_JSON) @Path("/delete")//增加annotation public void delete() { try { utils.delete(); } catch (Exception e) { e.printstacktrace(); } }供参考。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。