Solon 是個神奇的框架,不是基於 Servlet 的。但是又很支持 Servlet,尤其是 war 包。打起來還挺方便的。 如果你是做信創的(聽説,很多信創項目是用 war 部署到 tomcat 容器下的;而且都要用國產的開源框架)。自從 javaee 改包名後,那個苦啊。但是,Solon 可以用一樣的開發,雙同時支持(而且同時支持java8, java11, java17, java20):
- javax.servlet
- jakarta.servlet
強調一下,Solon 是推薦 fatjar 打包的框架(當然想打什麼,都能打)。支持 war 打包,主要是用户有需求,尤其是信創項目有需求。那為什麼能同時支持兩套包呢?是這樣的:
- 因為 solon 不是基於 Servlet 的。有自己的專有 web 接口規範,可適配一切
- 開發時,用的是 solon 的接口規範。打包的時候把適配包帶上
下面講講 solon 的 war 打包:
1、操作指南:
在普通項目增加幾項內容即可打 war 包(仍可打 jar 包):
- 添加 webapp/WEB-INF/web.xml 配置(參考模板裏的內容)
- 添加 solon.web.servlet(for javax)或者 solon.web.servlet.jakarta(for jakarta)插件依賴
- 使用 solon-maven-plugin 或者 maven-war-plugin 打包
具體模板下載:
-
打包成 war,需要放到 war 容器下運行(比如:tomcat, weblogic)
- solon/learn/helloworld_web_war.zip
2、具體説明:
a) 添加 webapp/WEB-INF/web.xml 配置,把 solonStartClass 的參數值改成 main 函數類
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>Solon war app</display-name>
<context-param>
<param-name>solonStartClass</param-name>
<param-value>org.example.demo.DemoApp</param-value>
</context-param>
<listener>
<listener-class>org.noear.solon.web.servlet.SolonServletContextListener</listener-class>
</listener>
<welcome-file-list>
<welcome-file>/</welcome-file>
</welcome-file-list>
</web-app>
b) 添加 solon.web.servlet 插件依賴
提供 servlet 容器對接支持。注意下面的包註釋説明:
<!-- javax 的用這個包 -->
<dependency>
<groupId>org.noear</groupId>
<artifactId>solon.web.servlet</artifactId>
</dependency>
<!-- jakarta 的用這個包(v2.4.1 後支持) -->
<dependency>
<groupId>org.noear</groupId>
<artifactId>solon.web.servlet.jakarta</artifactId>
</dependency>
c) 使用 solon-maven-plugin 或者 maven-war-plugin 打包
solon-maven-plugin 同時支持打 jar 和 war(由 packaging 配置指定)
<packaging>war</packaging>
...
<plugin>
<groupId>org.noear</groupId>
<artifactId>solon-maven-plugin</artifactId>
</plugin>
或者 maven-war-plugin,它只支持打 war 包
<packaging>war</packaging>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.3.2</version>
</plugin>
Solon 是什麼開源項目?
一個,Java 新的生態型應用開發框架。它從零開始構建,有自己的標準規範與開放生態(歷時五年,已有全球第二級別的生態規模)。與其他框架相比,它解決了兩個重要的痛點:啓動慢,費內存。
關鍵記事:
- 2021年1月,正式對外開源
- 2022年7月,建立官網,發力推廣
- 2023年2月,v2.0 發佈。官網增加 Solon Initializr,用於生成項目模板。
- 2023年4月,成為信通院可信開源社區、可信開源項目。Maven 單月下載量突破100萬。代碼提交數超 11000 次
- 2023年6月,Maven 單月下載量突破200萬。官網資料超 500 個頁面。
項目倉庫地址?
- gitee:https://gitee.com/noear/solon
- github:https://github.com/noear/solon