问题标签 [restlet-2.0]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
755 浏览

java - 部署在 Java App 服务器中的 Restlet RIAP 协议

我已经使用ServerServlet机制将我们的Restlet服务部署到了一个 Jetty Java 应用服务器。一些服务是从 GWT 前端调用的,但我还需要直接从我们的服务器逻辑调用它们。

Restlet RIAP 系统似乎很适合这个,但我不知道如何在这里使用它。看来我需要以某种方式暂停 Restlet 组件的上下文。

我发现一篇文章表明RiapServerHelper对此很有用。但我没有找到关于如何使用它的文档。任何例子都会有所帮助。

0 投票
1 回答
134 浏览

restlet - Restlet:根据用户访问的“项目”(组)添加角色

假设一个黑板类型的应用程序。有 2 个项目 - ProjectA 和 ProjectB。用户“nupul”(我)是这两个项目的一部分。对于 A,我是管理员,对于 B,我只是“成员”(没有管理员权限)

在访问资源时,/MySite/ProjectA/Items我想检查用户是否是管理员。

我知道这可以通过{projectName}从请求中选择参数并使用(发出请求的用户的)标识符并将其转发以检查数据库等来简单地完成,

我的问题是“如何”在身份验证期间使用 Enroler 添加角色。因为我{projectName}在那个阶段无法访问参数。我不知道你是否必须使用组/领域等来完成这项工作,但老实说,我花了很长时间才明白如何有效地使用它?(即,在请求被转发到资源之前)

我的意思是我知道我可以创建这些组/领域,但是我如何从资源中访问正确的“角色”????Restlet 需要有更真实的例子和更好的文档来展示它的类的使用!!快把我逼疯了!!身份验证不应该这么难!:)

0 投票
1 回答
1062 浏览

java - 是否有人将 Leonard Richardson 和 Sam Ruby 的“RESTful Web Services”一书中的 restlet 示例更新到 restlet 2.0?

我想运行这些示例,但它们使用了已弃用的 Restlet API 和不存在的 db4o API。总之,不编译。

我是 Restlet(和 Java)的新手,所以我真的不想浪费时间尝试修复代码。我希望有人已经做到了。

所以,我的问题是 - 有没有人将书中的 Restlet 示例升级到最新版本的 Restlet 和 db4o?

0 投票
1 回答
788 浏览

guice - org.restlet.ext.guice 的状态如何?

在restlet中寻找guice支持我遇到了这篇文章 - http://wiki.restlet.org/developers/172-restlet/257-restlet/284-restlet.html

但是 2.0 版(稳定版)和 2.1 版(候选发布版)都不包含 org.restlet.ext.guice.jar

所以,我的问题是它的状态是什么?我在哪里可以下载它?我正在使用restlet 2.0

谢谢。

0 投票
2 回答
1534 浏览

java - 使用内部 RESTlet 服务器的 RESTlet 应用程序的上下文为空

我有一个 Restlet (2.0.10) 应用程序,我从以下代码开始:

现在我需要应用程序内的应用程序根(即 /myApp),我尝试根据Java 从 restlet Resource 访问 ServletContext来获取它:

这在将我的应用程序部署到 Tomcat 服务器时工作得非常好,但是一旦我使用如上所示的组件启动服务器,我的 Context 始终为空。有人可以告诉我如何使用restlets内部服务器功能获得正确初始化的上下文吗?

0 投票
1 回答
1655 浏览

java - 如何在 Google-Guice 中实现动态绑定?

我正在尝试将服务外观实现到服务中以支持向后兼容性。

但是,我在 Guise 动态绑定中遇到了问题。我需要根据客户端应用程序请求的版本绑定相应的实现类。

有谁知道如何在 Google-Guice 中实现动态绑定?

0 投票
0 回答
561 浏览

java - Restlets 2.1-RC1- 需要示例高性能 ClientResource 代码

我们正在尝试开发/调整一个将 HTTP POST 每秒最多 10 个请求的 restlet 客户端。

restlet 网站提供了用于消耗资源的示例客户端代码。他们的例子是

然而,其他讨论(以及对该 wiki 的评论)表示这种方法存在问题。

似乎不清楚是否release()和/或exhaust()应该调用以释放资源。我试过了,例如

我们的客户端应用程序不能依赖垃圾收集器来避免资源耗尽。理想情况下,我们会重复使用相同的连接/套接字来提高性能。

我问的原因是我们的应用程序在性能测试中运行不佳,我们看到了间歇性问题。我认为这些是客户端,因为使用其他工具对服务器进行负载测试是可以的。

真正有用的是一些正确清理的示例代码。
问候,
基兰

0 投票
1 回答
427 浏览

java - 如何使用restlet从jax-rs获取客户端的IP

如何检索 http 请求的客户端 ip(远程 ip)?我将 JAX-RS 与 Restlet 一起使用,而不是使用 servlet。谢谢。

0 投票
2 回答
1423 浏览

google-app-engine - UTF-8 字符串在 GAE 上被 Restlet 打乱

我在 AppEngine 上托管了一个简单的 Restlet 服务。这对字符串执行基本的 CRUD 操作,并且当我使用 curl 测试它(对于所有动词)时,它可以很好地处理各种 UTF-8 字符。

这由托管在另一个 AppEngine 应用程序的 servlet 中的简单 restlet 客户端使用:

以上几乎就是我在 servlet 中的所有内容。很朴实。

servlet 是通过 jquery ajax 调用的,我得到的 json 格式正确,一切都很好,但问题是 UTF-8 编码的字符串回来打乱了,例如: Université de Montréal变成Universit?? de Montr??al.

我尝试在 servlet 中添加这一行(在其他所有内容之前):

但唯一的区别是,我得到的不是??我得到的Universitᅢᄅ de Montrᅢᄅal(我什至不知道那些是什么类型的角色,我想是亚洲人)。

我 100% 确定 restlet 服务没问题,因为除了逐行调试它之外,我还可以使用 curl 从 cmd 行对其进行测试,并且它返回格式良好的字符串。

通过查看来自 firefox 的响应的 http 标头(通过 javascript 调用 servlet 时),我可以看到编码确实是 UTF-8,正如预期的那样。经过数小时努力阅读所有可能的相关文章后,我遇到了这个 restlet 讨论 ,并注意到我确实Transfer-Encoding: chunked在响应的 http 标头上有。我尝试了建议的解决方案(覆盖 ClientResource.toRepresentation,没有任何好处,所以我尝试了 restlet 2.1,因为 susggested ClientResource.setRe​questEntityBuffering​(true),也没有运气),但我不相信我的问题Transfer-Encoding: chunked .

在这一点上,我没有想法,我真的很感激任何建议!o_o

更新

我尝试使用经典的 UrlConnection 进行手动 GET,字符串恢复正常:

如此多的 RESTful 和花哨......但我仍然不知道为什么原始版本不起作用!:/

0 投票
1 回答
2406 浏览

java - Restlet 内部 500 错误

我正在为我的 GAE 托管服务构建一个 jUnit 测试用例,其中一种方法有问题。

这是资源接口:

这是我的测试用例:

listItems 测试执行良好,但是当我运行 testAddItems() 时,我首先收到此警告:

INFO: Unable to register the helper org.restlet.client.ext.json.JsonConverter java.lang.ClassNotFoundException: org.restlet.client.ext.json.JsonConverter at org.restlet.engine.util.EngineClassLoader.findClass(EngineClassLoader.java:101) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at org.restlet.engine.Engine.registerHelper(Engine.java:723) at org.restlet.engine.Engine.registerHelpers(Engine.java:761) at org.restlet.engine.Engine.registerHelpers(Engine.java:801) at org.restlet.engine.Engine.discoverConverters(Engine.java:509) at org.restlet.engine.Engine.<init>(Engine.java:337) at org.restlet.engine.Engine.register(Engine.java:248) at org.restlet.engine.Engine.register(Engine.java:237) at org.restlet.engine.Engine.getInstance(Engine.java:149) at org.restlet.data.Method.<init>(Method.java:331) at org.restlet.data.Method.<init>(Method.java:390) at org.restlet.data.Method.<init>(Method.java:355) at org.restlet.data.Method.<clinit>(Method.java:54) at org.restlet.engine.resource.AnnotationUtils.addAnnotationDescriptors(AnnotationUtils.java:82) at org.restlet.engine.resource.AnnotationUtils.addAnnotations(AnnotationUtils.java:132) at org.restlet.engine.resource.AnnotationUtils.getAnnotations(AnnotationUtils.java:231) at org.restlet.resource.ClientResource.wrap(ClientResource.java:1548) at com.tests.tests.BasketItemUploadTests.setUp(BasketItemUploadTests.java:43) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222) at org.junit.runners.ParentRunner.run(ParentRunner.java:300) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

然后是 (resource.addBasketItems(jRep);) 行的堆栈跟踪:

Internal Server Error (500) - Internal Server Error at org.restlet.resource.ClientResource$1.invoke(ClientResource.java:1655) at $Proxy9.addBasketItems(Unknown Source) at com.tests.tests.BasketItemUploadTests.testAddItem(BasketItemUploadTests.java:84) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222) at org.junit.runners.ParentRunner.run(ParentRunner.java:300) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)