2016-07-14 79 views
1

我在試圖將我的Java項目部署到Google雲引擎時經歷了一段艱難的時期。我閱讀了大部分Google雲文檔,但我仍然無法弄清楚。將Java項目部署到Google計算引擎

我想要的只是tcp通信。我不需要HTML本身來做一些事情。很多指南都提到servlet和http get和post,但我只需要tcp。 也許我缺乏信息,這就是爲什麼我無法管理它。

所以首先 - 我需要某種形式的http服務器來運行tcp請求嗎?如果不是,我該如何部署我的項目?

現在我的項目只有Java。如果它很重要,我使用IntelliJ。這是這樣的。

import java.io.IOException; 
import java.net.ServerSocket; 
import java.net.Socket; 

public class MainServer { 

    public static void main(String[] args) { 
     final int SERVER_PORT = 3000; 
     final int SERVER_TIMEOUT = 5000; 

     try (ServerSocket serverSocket = new ServerSocket(SERVER_PORT)) { 
      while (true) { 
       try { 
        Socket clientSocket = serverSocket.accept(); 
        clientSocket.setSoTimeout(SERVER_TIMEOUT); 
        new ClientThread(clientSocket).start(); 
       } catch (IOException ignored) { 
       } 
      } 
     } catch (IOException ignored) { 
     } 
    } 
} 

而在ClientThread中,我會處理每個請求。

我在本地嘗試了它,它完美地工作。

現在我只需要將該項目部署到計算引擎並使其工作。

此外,我在服務器上安裝了Java JRE。我希望端口3000是好的,如果不是我可以改變它。

如果我不那麼清楚,請提前致謝。

回答

1

創建一個可運行的JAR文件。將其複製到您的計算引擎實例。運行。

如果您希望能夠在不登錄實例的情況下啓動/停止該程序,那麼您需要一個簡單的servlet。看看embedded Jetty - 這可能是這個用例的最佳解決方案。

+0

謝謝!當你這樣說的時候非常簡單。 我所要做的就像你說的那樣 - 創建一個可運行的JAR,將其複製到服務器並運行它。並且不要忘記在防火牆中允許相關的端口和協議。 –

+0

你能提供更多的細節嗎?通過使用「ng new」創建的angularjs項目來創建項目的這項工作?我如何製作可運行的JAR?我如何複製到雲端?你提到複製到CE,我想複製到AE(應用程序引擎) - 我的理解是它們是兩個不同的東西。 – mobibob

+0

Compute Engine和App Engine確實不同:https://stackoverflow.com/questions/22697049/what-is-the-difference-between-google-app-engine-and-google-compute-engine/22697189#22697189 –