[英]Restlet Protocol.FILE usage
我在Restlet站点的这个例子中有一个关于Protocol.FILE
用法的问题
// URI of the root directory.
public static final String ROOT_URI = "file:///c:/restlet/docs/api/";
[...]
// Create a component
Component component = new Component();
component.getServers().add(Protocol.HTTP, 8182);
component.getClients().add(Protocol.FILE);
// Create an application
Application application = new Application() {
@Override
public Restlet createInboundRoot() {
return new Directory(getContext(), ROOT_URI);
}
};
// Attach the application to the component and start it
component.getDefaultHost().attach(application);
component.start();
为什么需要将Protocol.FILE
添加到客户端连接器列表以提供目录/文件内容?
仅仅因为您在ROOT_URI
变量中使用此协议;-)关于协议,您需要在创建Restlet组件时显式添加它们。 客户端连接器提供了一种使用协议访问资源(本地或远程)的方法。
这里有一些关于幕后发生的事情的更多细节:
在类路径中添加Restlet扩展时,会在引擎中注册一些元素。 您可以拥有转换器,服务器连接器,客户端连接器......您可以看到Engine
实例上注册的内容:
List<ConnectorHelper<Client>> clientConnectors = Engine.getInstance().getRegisteredClients(); for (ConnectorHelper<Client> clientConnector : clientConnectors) { System.out.println(clientConnector); }
关于客户端连接器,它们对应于能够处理特定协议的实体。 例如,Jetty扩展提供客户端连接器,以基于Jetty客户端API执行HTTP和HTTPS请求。
HTTP
协议,Restlet将在已注册的能够处理此协议的列表中找到第一个客户端连接器。 对于执行HTTP请求,它将使用此连接器。 如果没有可用的连接器,它将抛出异常...... 在您的情况下, FILE
协议的客户端连接器由Restlet核心本身提供,因此它会自动注册。 但是您需要明确告诉Restlet您要使用此协议。
希望它对你有帮助,蒂埃里
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.