Solon2 之基礎:一、常用應用設定說明

2023-02-24 06:01:08

約定參考:

//資源路徑約定(不用設定;也不能設定)
resources/app.yml( 或 app.properties ) #為應用組態檔

resources/WEB-INF/static/ #為靜態檔案根目標
resources/WEB-INF/view/   #為檢視模板檔案根目標(支援多檢視共存)

1、伺服器端基本屬性

#伺服器埠(預設為8080)
server.port: 8080
#服務主機(ip)
server.host: "0.0.0.0"
#服務包裝埠(預設為 ${server.port})//v1.12.1 後支援  //一般用docker + 服務註冊時才可能用到
server.wrapPort: 8080
#服務包裝主機(ip)//v1.12.1 後支援
server.wrapHost: "0.0.0.0"
#服務上下文路徑
server.contextPath: "/test-service/" #v1.11.2 後支援

#服務 http 訊號名稱,服務註冊時可以為訊號指定名稱(預設為 ${solon.app.name})
server.http.name: "waterapi"
#服務 http 訊號埠(預設為 ${server.port})
server.http.port: 8080
#服務 http 訊號主機(ip)
server.http.host: "0.0.0.0"
#服務 http 訊號包裝埠 //v1.12.1 後支援  //一般用docker + 服務註冊時才可能用到
server.http.wrapPort: 8080
#服務 http 訊號包裝主機(ip)//v1.12.1 後支援
server.http.wrapHost: "0.0.0.0"
#服務 http 最小執行緒數(預設:0表示自動,支援固定值 16 或 倍數 x16)//v1.10.13 後支援
server.http.coreThreads: 0 
#服務 http 最大執行緒數(預設:0表示自動,支援固定值 16 或 倍數 x16) //v1.10.13 後支援
server.http.maxThreads: 0
#服務 http 閒置執行緒超時(0表示自動,單位毫秒) //v1.10.13 後支援
server.http.idleTimeout: 0
#服務 http 是否為IO密集型? //v1.12.2 後支援
server.http.ioBound: true

#服務 socket 訊號名稱,服務註冊時可以為訊號指定名稱(預設為 ${solon.app.name})
server.socket.name: "waterapi.tcp"
#服務 socket 訊號埠(預設為 20000+${server.port})
server.socket.port: 28080
#服務 socket 訊號主機(ip)
server.socket.host: "0.0.0.0"
#服務 socket 訊號包裝埠 //v1.12.1 後支援  //一般用docker + 服務註冊時才可能用到
server.socket.wrapPort: 28080
#服務 socket 訊號包裝主機(ip)//v1.12.1 後支援
server.socket.wrapHost: "0.0.0.0"
#服務 socket 最小執行緒數(預設:0表示自動,支援固定值 16 或 倍數 x16)) //v1.10.13 後支援
server.socket.coreThreads: 0 
#服務 socket 最大執行緒數(預設:0表示自動,支援固定值 16 或 倍數 x16)) //v1.10.13 後支援
server.socket.maxThreads: 0
#服務 socket 閒置執行緒超時(0表示自動,單位毫秒)) //v1.10.13 後支援
server.socket.idleTimeout: 0
#服務 socket 是否為IO密集型? //v1.12.2 後支援
server.socket.ioBound: true


#服務 websocket 訊號名稱,服務註冊時可以為訊號指定名稱(預設為 ${solon.app.name})
server.websocket.name: "waterapi.ws"
#服務 websocket 訊號埠(預設為 10000+${server.port})
server.websocket.port: 18080
#服務 websocket 訊號主機(ip)
server.websocket.host: "0.0.0.0"
#服務 websocket 訊號包裝埠 //v1.12.1 後支援  //一般用docker + 服務註冊時才可能用到
server.websocket.wrapPort: 18080
#服務 websocket 訊號包裝主機(ip)//v1.12.1 後支援
server.websocket.wrapHost: "0.0.0.0"
#服務 websocket 最小執行緒數(預設:0表示自動,支援固定值 16 或 倍數 x16)) //v1.10.13 後支援
server.websocket.coreThreads: 0 
#服務 websocket 最大執行緒數(預設:0表示自動,支援固定值 16 或 倍數 x16)) //v1.10.13 後支援
server.websocket.maxThreads: 0
#服務 websocket 閒置執行緒超時(0表示自動,單位毫秒)) //v1.10.13 後支援
server.websocket.idleTimeout: 0
#服務 websocket 是否為IO密集型? //v1.12.2 後支援
server.websocket.ioBound: true

關於包裝主機與包裝埠的說明:

  • 比如,服務在docker裡執行,就相當於被docker包裝了一層。
  • 此時,要向外部註冊服務,就可能需要使用包裝主機與包裝埠。

2、請求對談相關

#設定最大的請求包大小(或表單項的值大小)
server.request.maxBodySize: 2mb #kb,mb
#設定最大的上傳檔案大小
server.request.maxFileSize: 20mb #kb,mb (預設使用 maxBodySize 設定值)
#設定最大的請求頭大小
server.request.maxHeaderSize: 200kb #kb,mb
#設定請求體編碼
server.request.encoding: "utf-8"

#設定響應體編碼
server.response.encoding: "utf-8"

#設定對談超時秒數(單位:秒)
server.session.timeout: 7200 
#設定對談id的cookieName
server.session.cookieName: "SOLONID"
#設定對談狀態的cookie域(預設為當前域名)
server.session.state.domain: noear.org

3、伺服器端SSL證書設定屬性(https)

#設定SSL證書(支援:solon.boot.jdkhttp 或 solon.boot.jlhttp 或 solon.boot.smarthttp 或 solon.boot.jetty 或 solon.boot.undertow)
server.ssl.keyStore: "demo.jks" #或 "demo.pfx"
server.ssl.keyPassword: "demo"

注意:新增 ssl 證書後,應用的 "server.port" 埠只能用 https 來存取。

4、應用基本屬性

#應用名稱
solon.app.name: "waterapi"
#應用組
solon.app.group: "water"
#應用名稱空間(一般用不到,只有支援的元件才用)
solon.app.namespace: "demo"
#應用標題
solon.app.title: "WATER"

#應用體外擴充套件目錄
solon.extend: "ext"

#應用體外擴充套件設定(用於指定外部設定。策略:先載入內部的,再載入外部的蓋上去)
solon.config: "./app.yml"

#應用元資訊輸出開啟(輸出每個外掛的資訊)
solon.output.meta: 1

5、應用環境設定切換

#應用環境設定(主要用於切換包內不同的組態檔)
solon.env: dev

#例:
# app.yml      #應用主設定(必然會載入)
# app-dev.yml  #應用dev環境設定
# app-pro.yml  #應用pro環境設定
#
#啟動時:java -Dsolon.env=pro -jar demo.jar 或者 java -jar demo.jar --env=pro

6、偵錯模式控制

solon.debug:
  enableCaching: false
  enableTransaction: true

7、檢視字尾與模板引擎的對映設定

#預設約定的設定(不需要設定,除非要修改)
solon.view.mapping.htm: BeetlRender #簡寫
solon.view.mapping.shtm: EnjoyRender
solon.view.mapping.ftl: FreemarkerRender
solon.view.mapping.jsp: JspRender
solon.view.mapping.html: ThymeleafRender

#新增自義定對映時,需要寫全類名
solon.view.mapping.vm: org.noear.solon.view.velocity.VelocityRender #全名(一般用簡寫)

8、安全停止設定

solon.stop.safe: 0   #安全停止(0或1)//(v2.1.0 後支援;之前只能用介面啟用)
solon.stop.delay: 10   #安全停止的延時秒數(預設10秒)