本人特別喜歡在折騰這件事上浪費生命!java
手上有一個基於Maven的Web項目,Web框架用的Nutz,最近不是Nutzmore出了新版,我就看了一下,發現這個Undertow很厲害的樣子,就打算試一試。web
那麼淌坑的經歷就開始了。apache
首先,我用了WebSocket,插件(Nutz-plugins-undertow)並無特別說明用法,看了一下源碼,最後在WebLancher的start方法裏,本身添加了一個WebSocket的HttpHandler。websocket
-----------小分分--------------框架
//添加WebSocket的Handler PathHandler pathHandler = Handlers.path().addPrefixPath("/myWebsocket", websocket(new WebSocketConnectionCallback() { @Override public void onConnect(WebSocketHttpExchange exchange, WebSocketChannel channel) { channel.getReceiveSetter().set(new AbstractReceiveListener() { @Override protected void onFullTextMessage(WebSocketChannel channel, BufferedTextMessage message) { //這就是服務端向客戶端發送消息的方法 WebSockets.sendText(message.getData(), channel, null); } }); channel.resumeReceives(); } })).addPrefixPath(contextPath, servletHandler);
------------小分分----------------socket
而後還算順利,到了打包的時候了,做者提供了一個相關的Pom文件例子和命令,不過由於我項目裏還夾雜了一些Kotlin代碼(好奇心忒重),我添加了Kotlin的編譯相關的配置,不過一直沒辦法把頁面及其相關的東西放進去,嘗試過屢次,最後只有本身配置一個webRoot地址了,也能夠寫死,隨你便。 具體的pom文件以下:maven
<build> <sourceDirectory>src/main/org</sourceDirectory> <finalName>ROOT</finalName> <plugins> <plugin> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-maven-plugin</artifactId> <version>${org.jetbrains.kotlin.kotlin-stdlib-jre8.version}</version> <executions> <execution> <id>compile</id> <phase>process-sources</phase> <goals> <goal>compile</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>3.0.0</version> <configuration> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> <archive> <manifest> <mainClass>your main class</mainClass> </manifest> </archive> </configuration> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
最後執行ide
mvn clean package -U
就能夠了 而後ui
java -jar xx.jar "你的web目錄"
最後說明一下,這個「你的web目錄」 是傳遞給WebConfig裏的setRoot方法的,你能夠用你喜歡的方式來插入!插件
還有其餘坑,遇到再補充了。