如何打包Android Restlet服务器所需的静态文件?

时间:2015-06-04 19:56:28

标签: java android restlet restlet-2.0

我正在使用Restlet 2.3.2。

我正在构建一个运行Servlet服务器的Android Activity。我想用生成的APK打包一些文件(密钥库和静态Web文件目录),并让它们可以访问Restlet。

现在,我将这些文件放在/storage/sdcard0中。以下是实际使用位于该位置的文件的代码:

Server server = component.getServers().add(org.restlet.data.Protocol.HTTPS, port);
component.getClients().add(org.restlet.data.Protocol.FILE);

Series<Parameter> parameters = server.getContext().getParameters();
parameters.add("sslContextFactory", "org.restlet.engine.ssl.DefaultSslContextFactory");
parameters.add("keyStorePath", "/storage/sdcard0/ssl/keystore");
parameters.add("keyStorePassword", "password");
parameters.add("keyPassword", "password");
parameters.add("keyStoreType", "BKS");

parameters.add("keyManagerAlgorithm", KeyManagerFactory.getDefaultAlgorithm());

// Create an application
Application application = new Application() {
    @Override
    public Restlet createInboundRoot() {
        return new Directory(getContext(), "/storage/sdcard0/www/");
    }
};

component.getDefaultHost().attach("/static", application);

我想将这些文件打包在我的Android项目中的res/rawassets中,但我不知道如何移动后我的网络服务器可以访问这些文件。 / p>

1 个答案:

答案 0 :(得分:1)

您可以更改目录根网址并使用clap协议(利用类加载器):

component.getClients().add(org.restlet.data.Protocol.CLAP);

// Create an application
Application application = new Application() {
    @Override
    public Restlet createInboundRoot() {
        return new Directory(getContext(), "clap://class/assets/");
    }
};

我没有完全测试您的代码,我希望它能为您效劳。