博客 / 詳情

返回

信創啊信創。Solon 雙同時支持 jakarta.servlet 容器了!

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
user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.