JBoss模块示例–模块化Web应用程序
我首先想到了以下目標(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)題。
- 上一篇: 伪造源地址ddos攻击是什么(伪造源地址
- 下一篇: 15分钟内开始使用Amazon Web