日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

JBoss模块示例–模块化Web应用程序

發(fā)布時(shí)間:2023/12/3 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JBoss模块示例–模块化Web应用程序 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
最近,我讀了為什么沒(méi)有標(biāo)準(zhǔn)來(lái)開(kāi)發(fā)真正的模塊化Web應(yīng)用程序? 由Patroklos Papapetrou撰寫( 在Java Code Geeks中也有介紹 )。 受本文的啟發(fā),我決定檢查實(shí)際使用的JBoss模塊 。 這篇文章逐步描述了我的實(shí)驗(yàn)。

我首先想到了以下目標(biāo)-使用我自己的JBoss模塊定義的某些服務(wù)來(lái)創(chuàng)建Web應(yīng)用程序。 我準(zhǔn)備的服務(wù)非常簡(jiǎn)單。 我將其命名為Echo Service:

package warlock.echo;public interface EchoService {String echo(String param);}

并放入另一個(gè)名為echo-api的jar文件中。 然后,我實(shí)現(xiàn)了該服務(wù):

package warlock.echo.impl;import warlock.echo.EchoService;public class DefaultEchoService implements EchoService {public String echo(String param) {return param;}}

并將實(shí)現(xiàn)放在新的jar文件中,該文件名為echo-module。 考慮到我的Web應(yīng)用程序應(yīng)該只了解服務(wù)API,而不是特定的實(shí)現(xiàn),因此,我決定采用使用Java平臺(tái)創(chuàng)建可擴(kuò)展應(yīng)用程序中所述的方法-該選擇需要添加到下面的echo模塊jar特殊文件中:META-INF / services / warlock.echo.EchoService,持有服務(wù)實(shí)現(xiàn)的“指針”(實(shí)現(xiàn)類的完全限定名稱)。

此時(shí),我檢索并解壓縮了JBoss Application Server 7 ,進(jìn)入解壓縮的JBoss,然后進(jìn)入modules目錄。 在此目錄中,我添加了以下結(jié)構(gòu):

上面提到了這里可見(jiàn)的兩個(gè)jar文件,module.xml文件是我的JBoss Module的定義–名為'warlock.echo',具有以下內(nèi)容:

<?xml version="1.0" encoding="UTF-8"?><module xmlns="urn:jboss:module:1.0" name="warlock.echo"><resources><resource-root path="echo-module-1.0.0-SNAPSHOT.jar" /><resource-root path="echo-api-1.0.0-SNAPSHOT.jar" /></resources></module>

完成JBoss Module定義后,我準(zhǔn)備了一個(gè)簡(jiǎn)單的基于Spring Framework的應(yīng)用程序(僅在項(xiàng)目編譯期間使用echo-api jar,而根本不使用echo-模塊jar)僅使用一個(gè)Controller:

package warlock;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody;import warlock.echo.EchoService;@Controller @RequestMapping("/echo.html") public class EchoController {@Autowiredprivate EchoService service;@RequestMapping(method = RequestMethod.GET)@ResponseBodypublic String handleGet() {return service.echo("It workzzzzz!");} }

如您所見(jiàn),Controller將某些字符串的Echo Service調(diào)用的結(jié)果作為響應(yīng)主體返回。 現(xiàn)在到最重要的部分– Web應(yīng)用程序中的Echo服務(wù)定義:

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">...<bean class="org.springframework.beans.factory.serviceloader.ServiceFactoryBean"><property name="serviceType" value="warlock.echo.EchoService" /></bean>...</beans>

我知道,有一件事困擾您:) –如果我們不向Web應(yīng)用程序添加echo-api和echo-module jar,那么如何找到Echo Service實(shí)現(xiàn)?

好吧,這就是美麗本身;)–我們只需要再做一件事– WEB-INF / jboss-deployment-structure.xml文件:

<jboss-deployment-structure><deployment><dependencies><module name="warlock.echo" services="export" /></dependencies></deployment> </jboss-deployment-structure>

這樣,我們告訴JBoss,此應(yīng)用程序取決于'warlock.echo'模塊和此模塊中定義的服務(wù)。 剩下的就是純JBoss Module的魔術(shù)了;)

甜點(diǎn)講座:

  • 帶有JBoss模塊的模塊化Java
  • JBoss模塊示例

參考:來(lái)自JCG合作伙伴 Warlock的基于JBoss Modules的模塊化Web應(yīng)用程序 ,位于“ Warlock's Thoughts”博客中 。

相關(guān)文章 :

  • OSGi將Maven與Equinox結(jié)合使用
  • 真正的模塊化Web應(yīng)用程序:為什么沒(méi)有開(kāi)發(fā)標(biāo)準(zhǔn)?
  • Java Code Geeks Andygene Web原型
  • Java最佳實(shí)踐系列
  • Java教程和Android教程列表

翻譯自: https://www.javacodegeeks.com/2011/09/jboss-modules-example-modular-web.html

總結(jié)

以上是生活随笔為你收集整理的JBoss模块示例–模块化Web应用程序的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。