问题标签 [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.
java - 部署在 Java App 服务器中的 Restlet RIAP 协议
我已经使用ServerServlet机制将我们的Restlet服务部署到了一个 Jetty Java 应用服务器。一些服务是从 GWT 前端调用的,但我还需要直接从我们的服务器逻辑调用它们。
Restlet RIAP 系统似乎很适合这个,但我不知道如何在这里使用它。看来我需要以某种方式暂停 Restlet 组件的上下文。
我发现一篇文章表明RiapServerHelper对此很有用。但我没有找到关于如何使用它的文档。任何例子都会有所帮助。
restlet - Restlet:根据用户访问的“项目”(组)添加角色
假设一个黑板类型的应用程序。有 2 个项目 - ProjectA 和 ProjectB。用户“nupul”(我)是这两个项目的一部分。对于 A,我是管理员,对于 B,我只是“成员”(没有管理员权限)
在访问资源时,/MySite/ProjectA/Items
我想检查用户是否是管理员。
我知道这可以通过{projectName}
从请求中选择参数并使用(发出请求的用户的)标识符并将其转发以检查数据库等来简单地完成,
我的问题是“如何”在身份验证期间使用 Enroler 添加角色。因为我{projectName}
在那个阶段无法访问参数。我不知道你是否必须使用组/领域等来完成这项工作,但老实说,我花了很长时间才明白如何有效地使用它?(即,在请求被转发到资源之前)
我的意思是我知道我可以创建这些组/领域,但是我如何从资源中访问正确的“角色”????Restlet 需要有更真实的例子和更好的文档来展示它的类的使用!!快把我逼疯了!!身份验证不应该这么难!:)
java - 是否有人将 Leonard Richardson 和 Sam Ruby 的“RESTful Web Services”一书中的 restlet 示例更新到 restlet 2.0?
我想运行这些示例,但它们使用了已弃用的 Restlet API 和不存在的 db4o API。总之,不编译。
我是 Restlet(和 Java)的新手,所以我真的不想浪费时间尝试修复代码。我希望有人已经做到了。
所以,我的问题是 - 有没有人将书中的 Restlet 示例升级到最新版本的 Restlet 和 db4o?
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
谢谢。
java - 使用内部 RESTlet 服务器的 RESTlet 应用程序的上下文为空
我有一个 Restlet (2.0.10) 应用程序,我从以下代码开始:
现在我需要应用程序内的应用程序根(即 /myApp),我尝试根据Java 从 restlet Resource 访问 ServletContext来获取它:
这在将我的应用程序部署到 Tomcat 服务器时工作得非常好,但是一旦我使用如上所示的组件启动服务器,我的 Context 始终为空。有人可以告诉我如何使用restlets内部服务器功能获得正确初始化的上下文吗?
java - 如何在 Google-Guice 中实现动态绑定?
我正在尝试将服务外观实现到服务中以支持向后兼容性。
但是,我在 Guise 动态绑定中遇到了问题。我需要根据客户端应用程序请求的版本绑定相应的实现类。
有谁知道如何在 Google-Guice 中实现动态绑定?
java - Restlets 2.1-RC1- 需要示例高性能 ClientResource 代码
我们正在尝试开发/调整一个将 HTTP POST 每秒最多 10 个请求的 restlet 客户端。
restlet 网站提供了用于消耗资源的示例客户端代码。他们的例子是
然而,其他讨论(以及对该 wiki 的评论)表示这种方法存在问题。
似乎不清楚是否release()
和/或exhaust()
应该调用以释放资源。我试过了,例如
我们的客户端应用程序不能依赖垃圾收集器来避免资源耗尽。理想情况下,我们会重复使用相同的连接/套接字来提高性能。
我问的原因是我们的应用程序在性能测试中运行不佳,我们看到了间歇性问题。我认为这些是客户端,因为使用其他工具对服务器进行负载测试是可以的。
真正有用的是一些正确清理的示例代码。
问候,
基兰
java - 如何使用restlet从jax-rs获取客户端的IP
如何检索 http 请求的客户端 ip(远程 ip)?我将 JAX-RS 与 Restlet 一起使用,而不是使用 servlet。谢谢。
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.setRequestEntityBuffering(true)
,也没有运气),但我不相信我的问题 与Transfer-Encoding: chunked
.
在这一点上,我没有想法,我真的很感激任何建议!o_o
更新:
我尝试使用经典的 UrlConnection 进行手动 GET,字符串恢复正常:
如此多的 RESTful 和花哨......但我仍然不知道为什么原始版本不起作用!:/
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)