Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用云存储的GAE flexible中出现错误502_Java_Google App Engine_Google Cloud Storage_App Engine Flexible - Fatal编程技术网

Java 使用云存储的GAE flexible中出现错误502

Java 使用云存储的GAE flexible中出现错误502,java,google-app-engine,google-cloud-storage,app-engine-flexible,Java,Google App Engine,Google Cloud Storage,App Engine Flexible,我已经使用GAE Flexible创建了一个应用程序。我可以毫无问题地部署和使用该应用程序。然后,我使用JSON将上传文件添加到Google云存储中,并在localhost中正常工作。我部署它时没有任何错误,但部署完成后,我尝试浏览我的应用程序时,我看到以下错误: 我的应用程序非常简单,没有很多请求,所以我不需要退避。 在控制台的日志中,我看到以下错误: [error] 32#32: *9771 connect() failed (113: No route to host) while con

我已经使用GAE Flexible创建了一个应用程序。我可以毫无问题地部署和使用该应用程序。然后,我使用JSON将上传文件添加到Google云存储中,并在localhost中正常工作。我部署它时没有任何错误,但部署完成后,我尝试浏览我的应用程序时,我看到以下错误:

我的应用程序非常简单,没有很多请求,所以我不需要退避。 在控制台的日志中,我看到以下错误:

[error] 32#32: *9771 connect() failed (113: No route to host) while connecting to upstream, client: 130.211.3.171, server: , request: "GET /_ah/health HTTP/1.1", upstream: "http://172.18.0.2:8080/_ah/health", host: "10.128.0.2"
下面是我在云存储中放置图像的课程:

    @SuppressWarnings("serial")
@WebServlet(name = "upload", value = "/upload")
@MultipartConfig()
public class UploadServlet extends HttpServlet {

  private static final Logger logger = LoggerFactory.getLogger(UploadServlet.class); 

  private static final String BUCKET_NAME ="myBUCKET_NAME";// System.getenv("BUCKET_NAME");
  private static Storage storage = null;

  @Override
  public void init() {
      try {
        logger.debug("bucket name: " + BUCKET_NAME  );
        InputStream is = getClass().getResourceAsStream("/Shelfcheck-9faaa7cbc5a5.json");
        storage = StorageOptions.newBuilder()
                  .setCredentials(ServiceAccountCredentials.fromStream(is))
                  .build()
                  .getService();
        logger.debug("set credential correctly!"  );

    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }          

//  Storage  storage_service = StorageOptions.defaultInstance().service();
//  Iterator<Bucket> bucketIterator = storage_service.list().iterateAll();
//  while (bucketIterator.hasNext()) {
//    System.out.println(bucketIterator.next());
//  }


//    storage = StorageOptions.getDefaultInstance().getService();
  }

  @Override
  public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException,
      ServletException {

      logger.debug("Start uploading the files...");

    final Part filePart = req.getPart("file");
    final String fileName = filePart.getSubmittedFileName();

    // Modify access list to allow all users with link to read file
    List<Acl> acls = new ArrayList<>();
    acls.add(Acl.of(Acl.User.ofAllUsers(), Acl.Role.READER));
    // the inputstream is closed by default, so we don't need to close it here
    Blob blob =
        storage.create(
            BlobInfo.newBuilder(BUCKET_NAME, fileName).setAcl(acls).build(),
            filePart.getInputStream());

    // return the public download link
    logger.debug(blob.getMediaLink());

    resp.getWriter().print(blob.getMediaLink());
    logger.debug(resp.toString());
    logger.debug(blob.getMediaLink());
  }
}
@SuppressWarnings(“串行”)
@WebServlet(name=“upload”,value=“/upload”)
@MultipartConfig()
公共类UploadServlet扩展了HttpServlet{
私有静态最终记录器Logger=LoggerFactory.getLogger(UploadServlet.class);
私有静态最终字符串BUCKET_NAME=“myBUCKET_NAME”;//System.getenv(“BUCKET_NAME”);
私有静态存储=null;
@凌驾
公共void init(){
试一试{
logger.debug(“bucket name:+bucket\u name”);
InputStream=getClass().getResourceAsStream(“/Shelfcheck-9faaa7cbc5a5.json”);
storage=StorageOptions.newBuilder()
.setCredentials(ServiceAccountCredentials.fromStream(is))
.build()
.getService();
debug(“正确设置凭据!”);
}catch(filenotfounde异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}          
//存储服务=StorageOptions.defaultInstance().service();
//迭代器bucketIterator=storage_service.list().iterateAll();
//while(bucketIterator.hasNext()){
//System.out.println(bucketIterator.next());
//  }
//storage=StorageOptions.getDefaultInstance().getService();
}
@凌驾
public void doPost(HttpServletRequest-req、HttpServletResponse-resp)引发IOException,
ServletException{
debug(“开始上传文件…”);
最终部件filePart=req.getPart(“文件”);
最终字符串文件名=filePart.getSubmittedFileName();
//修改访问列表以允许所有具有链接的用户读取文件
列表ACL=new ArrayList();
add(Acl.of(Acl.User.ofAllUsers(),Acl.Role.READER));
//inputstream在默认情况下是关闭的,所以我们不需要在这里关闭它
一团一团=
存储。创建(
BlobInfo.newBuilder(BUCKET_名称,文件名).setAcl(acls.build(),
getInputStream());
//返回公共下载链接
debug(blob.getMediaLink());
resp.getWriter()打印(blob.getMediaLink());
debug(resp.toString());
debug(blob.getMediaLink());
}
}
有人知道我如何解决这个问题吗?
谢谢

检查gae板中的调试,您将获得更多信息我已添加了从控制台日志中发现的错误!知道吗?你在用FTP吗?你有代理吗?没有,我不使用任何FTP或代理。我使用com.google.cloud.storage.storage在云存储中创建元素。我已经用我的代码更新了帖子。你能检查一下应用程序的日志,看看部署后你的健康检查是否通过了吗?此外,您是否有自定义健康检查,即您是否在应用程序中处理了/_ah/健康路径?
    @SuppressWarnings("serial")
@WebServlet(name = "upload", value = "/upload")
@MultipartConfig()
public class UploadServlet extends HttpServlet {

  private static final Logger logger = LoggerFactory.getLogger(UploadServlet.class); 

  private static final String BUCKET_NAME ="myBUCKET_NAME";// System.getenv("BUCKET_NAME");
  private static Storage storage = null;

  @Override
  public void init() {
      try {
        logger.debug("bucket name: " + BUCKET_NAME  );
        InputStream is = getClass().getResourceAsStream("/Shelfcheck-9faaa7cbc5a5.json");
        storage = StorageOptions.newBuilder()
                  .setCredentials(ServiceAccountCredentials.fromStream(is))
                  .build()
                  .getService();
        logger.debug("set credential correctly!"  );

    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }          

//  Storage  storage_service = StorageOptions.defaultInstance().service();
//  Iterator<Bucket> bucketIterator = storage_service.list().iterateAll();
//  while (bucketIterator.hasNext()) {
//    System.out.println(bucketIterator.next());
//  }


//    storage = StorageOptions.getDefaultInstance().getService();
  }

  @Override
  public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException,
      ServletException {

      logger.debug("Start uploading the files...");

    final Part filePart = req.getPart("file");
    final String fileName = filePart.getSubmittedFileName();

    // Modify access list to allow all users with link to read file
    List<Acl> acls = new ArrayList<>();
    acls.add(Acl.of(Acl.User.ofAllUsers(), Acl.Role.READER));
    // the inputstream is closed by default, so we don't need to close it here
    Blob blob =
        storage.create(
            BlobInfo.newBuilder(BUCKET_NAME, fileName).setAcl(acls).build(),
            filePart.getInputStream());

    // return the public download link
    logger.debug(blob.getMediaLink());

    resp.getWriter().print(blob.getMediaLink());
    logger.debug(resp.toString());
    logger.debug(blob.getMediaLink());
  }
}