Tomcat 网络应用程序 : Error storing image file outside of context root on OpenShift

标签 tomcat web-deployment openshift

为了安全起见,我的 tomcat Web 应用程序上传图像并将它们保存在上下文文件夹之外。我在本地机器上测试了代码,它运行良好。

当我在 OpenShift 上托管代码时,在下面突出显示的行中出现空指针异常:

public void init() throws ServletException {
    // get name of images directory
    String imagesPath = getServletContext().getInitParameter(
            PARAM_UPLOAD_IMAGE_PATH);

    //get path to context root directory
    String contextRoot = getServletContext().getRealPath("/");



    //remove trailing '/'
    contextRoot = contextRoot.substring(0,contextRoot.length() - 1);//NULL POINTER EXCEPTON

    //get path of directory outside root, where images will be saved.
    String outsideRoot = contextRoot.substring(0, contextRoot.lastIndexOf("/"));

    uploadPath = outsideRoot + File.separator + imagesPath;
}

我不明白问题出在哪里,因为代码在我的机器上运行良好。托管站点是否不允许您将文件保存在上下文根之外?有没有解决的办法?感谢您的帮助!

最佳答案

您在 OpenShift 上实际拥有写入权限的唯一位置是 ~/app-root/data 和/tmp。

App-root/data 有一个环境变量,你应该在你的代码中使用 $OPENSHIFT_DATA_DIR。请更改您的代码以写入此目录。

关于Tomcat 网络应用程序 : Error storing image file outside of context root on OpenShift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16739471/

相关文章:

java - 为什么不能使用CentOS、plesk 9.2.1 和tomcat 5.5 安装solr 1.3.0?

java - 创建 Apache Tiles 简单应用程序时出现异常

java - Tomcat 8 Http状态404 请求的资源不可用

docker - minishift/openshift中的fsHandler.go rootDiskErr和rootInodeErr错误是什么

node.js - 在 OpenShift 上扩展 MongoDB 与使用 MongoLab

git - 如何在 openshift origin 中运行 docker 镜像而不通过 Web 控制台构建它

java - CXF Webservice 随机等待 Apache Tomcat 响应 3 秒

java - 尝试在 java .war 之外读取 .properties 文件时出错

networking - 如何使一个Pod与Kubernetes中的另一个Pod联网? (简单)

tomcat - 如何将 .war 文件和 jni 库文件部署到 Web 服务器上?