1. 程式人生 > >怎樣讓tomcat啟動就執行我的寫的java類,即遊戲服務端?

怎樣讓tomcat啟動就執行我的寫的java類,即遊戲服務端?

我的第一個服務端程式

最近在學習寫網路遊戲,所以要寫伺服器端程式,我找了一圈,PHP,JAVA,C,最後為了與阿里雲和騰訊雲的相容性好,成本低廉以及學習難度低,我選擇了java。

然後開始學習怎麼寫java的class。以及怎麼連線資料庫,怎麼實現隔幾秒執行一次程式碼。畢竟這兩個合在一起就能夠成最簡單的伺服器了。

我的第一個程式很簡單,tomcat啟動後,每6秒鐘執行一次,生成一組隨機數,送給mysql資料庫就行。
關鍵點 : 自啟動 計時執行 寫資料庫

由於寫資料庫和計時執行在之前的文章已經介紹過了。

所以,本文主要來介紹怎麼自啟動,
已有程式碼:
1. 主函式:mainGame.java (遊戲啟動的領起函式。)
2. 幀執行類: gameEnterFrame.java (負責迴圈執行的,我設了2秒鐘執行一次,往資料庫裡寫數。)

關於自啟動,有兩個關鍵的點:

1. 需要修改一個配置檔案 名字叫web.xml

在webRoot下的WEB-INF中。
如果你沒有我圖片一樣的路徑,很遺憾,那就是你的工程型別建立錯了。
記得要new一個web server project
這裡寫圖片描述
這個檔案裡面簡單的新增三行程式碼,告訴tomcat,我要執行一個自啟動類,我給他起名叫做autoRun,就行了。如下圖,藍色部分是我新增的程式碼。
這裡寫圖片描述
方便大家用,粘貼出來。

<listener>  
    <listener-class>game.autoRun</listener-class>
</listener>

有了這句監聽的話,就可以在執行的時候執行game包(game包是我自己建立的遊戲類包,你可以自己建立自己喜歡的包的名字)下的autoRun類了。這個autoRun類是我寫的自啟動程式碼。

具體怎麼寫,看下面:

2.自啟動程式碼怎麼寫:

我們需要讓自啟動程式碼引出主函式。於是在game包下,新建一個名字為autoRun.java的檔案

package game;
import javax.servlet.ServletContextEvent;//這個是自啟動要用到的類,伺服器後臺事件
import javax.servlet.ServletContextListener;//這個是自啟動要用到的類,伺服器後臺監聽
import game.mainGame;//我們把主函式匯入進來以便於執行 //宣告一個autoRun類,使用伺服器後臺監聽介面。固定用法,死記硬背 public class autoRun implements ServletContextListener{ //當後臺被初始化,即發生了tomcat啟動了事件,固定用法 public void contextInitialized(ServletContextEvent arg0){ //你要做的事兒,寫在這裡 System.out.println("MainFunction is running."); mainGame.main(null); } //當後臺被銷燬,即發生了tomcat關閉了事件,固定用法 public void contextDestroyed(ServletContextEvent arg0){ //執行內容寫在這裡 } }

可以看到,監聽tomcat啟動關閉狀態裡面有兩個部分,

一個是啟動了我要幹什麼
另一個是關閉了我要幹什麼

當然,關閉了,我眼下還不需要執行什麼動作。我只是需要在啟動後執行遊戲的主函式而已。所以我把主函式仍在了啟動裡面。