java - 如何将 reSTLet 附加到特定的 URL 路径方案(HTTP 或 HTTPS)?

标签 java restlet

我使用的是 ReSTLet 2.3.2

我想运行一个同时使用 HTTP 和 HTTPS 协议(protocol)的 ReSTLet 服务器,但我想为每个协议(protocol)附加一个不同的 ReSTLet。例如,reSTLetUnsecure 为 HTTP,而 reSTLetSecure 为 HTTPS。实际上,仅将一个 ReSTLet 附加到路径 /test 就可以正常工作。

我尝试在附加时将方案放入 URI 中,如下所示,但这不起作用(我的浏览器找不到页面):

Server server = component.getServers().add(Protocol.HTTPS, 8443);
component.getServers().add(Protocol.HTTP, 8080);
[...]
component.getDefaultHost().attach("https://localhost:8443/test", restletSecure);
component.getDefaultHost().attach("http://localhost:8080/test", restletUnsecure);

我怎样才能实现这个目标?

最佳答案

我认为您应该定义特定的虚拟主机 HTTP 和 HTTPS 请求,如下所述:

Component component = (...)

// HTTPS
VirtualHost hostHttps
      = new VirtualHost(component.getContext());
component.getHosts().add(hostHttps);
hostHttps.setHostScheme("https");

Restlet restletSecure = (...)
hostHttps.attachDefault(restletSecure);

// HTTP
VirtualHost hostHttp
      = new VirtualHost(component.getContext());
component.getHosts().add(hostHttp);
hostHttp.setHostScheme("http");

Restlet restletUnsecure = (...)
hostHttp.attachDefault(restletUnsecure);

希望对你有帮助 蒂埃里

关于java - 如何将 reSTLet 附加到特定的 URL 路径方案(HTTP 或 HTTPS)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30536022/

相关文章:

java - 在 XML 中设置 JavaBeans 集合属性

java - 如何在阻塞代码的情况下连续读取 Java 套接字的输入流?

java - 什么时候创建一个新变量来存储一个值而不是多次调用函数?

java - 多种方法的 SOAP 到 ReSTLes 策略

java - Android ReSTLet 框架 - 获取文件列表并下载文件

java - 序列化方法

java - 如何防止 jackson 在第三方类中序列化一个字段

java - 如何让人类标记在 map 上移动?

java - Camel ReSTLet maxThreads 未按预期工作

java - ReSTLet如何解码HTTP基本认证中的secret