jboss 发布web_JBoss模块示例–模块化Web应用程序

jboss 发布web

最近,我读到了为什么没有标准来开发真正的模块化Web应用程序? 由Patroklos Papapetrou撰写( 在Java Code Geeks中也有介绍 )。 受本文的启发,我决定检查实际使用的JBoss模块 。 这篇文章逐步描述了我的实验。

我首先想到了以下目标–使用我自己的JBoss模块定义的某些服务来创建Web应用程序。 我准备的服务非常简单。 我将其命名为Echo Service:

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

并放入另一个名为echo-api的jar文件中。 然后,我实现了该服务:

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

并将实现放在新的jar文件中,该文件名为echo-module。 考虑到我的Web应用程序应该只了解服务API,而不是特定的实现,因此,我决定采用使用Java平台创建可扩展应用程序中介绍的方法-该选择需要添加到下面的echo模块jar特殊文件中:META-INF / services / warlock.echo.EchoService,持有服务实现的“指针”(实现类的完全限定名称)。

此时,我检索并解压缩了JBoss Application Server 7 ,进入解压缩的JBoss,然后进入modules目录。 在此目录中,我添加了以下结构:

上面提到了这里可见的两个jar文件,module.xml文件是我的JBoss Module的定义–名为'warlock.echo',具有以下内容:

<?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定义后,我准备了一个简单的基于Spring Framework的应用程序(仅在项目编译期间使用echo-api jar,而根本不使用echo-module jar),仅使用一个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!");}
}

如您所见,Controller将某些字符串的Echo Service调用结果作为响应主体返回。 现在到最重要的部分– Web应用程序中的Echo服务定义:

<?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应用程序添加echo-api和echo-module jar,那么如何找到Echo Service实现呢?

好吧,这就是美丽;)–我们只需要再做一件事– WEB-INF / jboss-deployment-structure.xml文件:

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

这样,我们告诉JBoss,此应用程序取决于'warlock.echo'模块和此模块中定义的服务。 其余的就是纯JBoss Module魔术;)

甜点讲座:

  • 带有JBoss模块的模块化Java
  • JBoss模块示例

参考: “ Warlock的想法”博客中的 JCG合作伙伴 Warlock的基于JBoss Modules的模块化Web应用程序 。

相关文章 :

  • OSGi将Maven与Equinox结合使用
  • 真正的模块化Web应用程序:为什么没有开发标准?
  • Java Code Geeks Andygene Web原型
  • Java最佳实践系列
  • Java教程和Android教程列表

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

jboss 发布web

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/358255.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

南方数据后台的WEBSHEL

南方数据企业系统&#xff0c;后台上传截断拿webshell 在“新闻资讯”-“添加新闻”模块中&#xff0c;在“新闻图片”中点击“上传”按钮&#xff0c;会出现一个弹窗&#xff0c;复制弹窗的地址&#xff0c;在新标签页中打开 本地准备个asp类型的一句话木马&#xff1a;<%…

【APICloud系列|20】如何使用使用APICloud开发出优质的Hybrid App

谈到这里,我先抛出几个问题,虽然他们社区比较活跃,我曾经也在上面开发过一款办公类应用并成功上架到各大安卓应用商店与APPstore,有兴趣的可以看看我以前的帖子。新手可以学习一下他们七天的教学,可以很快的入门,至于他们官方的一些视频可能比较陈旧,凑合着看吧,影响不是…

java对象的序列化机制详解

Java对象的序列化机制 Java对象的序列化&#xff0c;是将内存中的java对象转化为二进制的字节流&#xff0c;然后保存到磁盘中或者在网络上。这就是序列化对象&#xff0c;反序列化顾名思义就是将对象的二进制字节流恢复成原来的对象。注意只有对象的类名和属性能被序列化&…

测试并发应用

本文是我们学院课程中名为Java Concurrency Essentials的一部分 。 在本课程中&#xff0c;您将深入探讨并发的魔力。 将向您介绍并发和并发代码的基础知识&#xff0c;并学习诸如原子性&#xff0c;同步和线程安全之类的概念。 在这里查看 &#xff01; 目录 1.简介 2. Sim…

无忧企业系统的getshell

方法一&#xff1a;数据库备份 写入后进行数据库备份 路径 shell工具连接 方法二&#xff1a;修改允许上传后缀&#xff0c;直接上传马

如何使用FinalShell、FileZilla上传网站代码到服务器?这两个都是神器

这段时间想做一个导航网站来着,然后就简单写了一个网页,买了一个域名、一台ECS服务器,都是比较便宜的那种,https://www.aliyun.com/minisite/goods?userCode=1k1odmgm 这个学生或者新用户基本都是一折,还能玩得起。所有软件的安装除了选择安装路径,都可以无脑按安装。 …

[CareerCup] 9.6 Generate Parentheses 生成括号

9.6 Implement an algorithm to print all valid (e.g., properly opened and closed) combinations of n-pairs of parentheses.EXAMPLEInput: 3Output: ((())), (()()), (())(), ()(()), ()()() LeetCode上的原题&#xff0c;请参见我之前的博客Generate Parentheses 生成括号…

神经网络:深度学习优化方法

1.有哪些方法能提升CNN模型的泛化能力 采集更多数据&#xff1a;数据决定算法的上限。 优化数据分布&#xff1a;数据类别均衡。 选用合适的目标函数。 设计合适的网络结构。 数据增强。 权值正则化。 使用合适的优化器等。 2.BN层面试高频问题大汇总 BN层解决了什么问…

PDF.js如何添加放大缩小的功能,转换成图片应该如何实现?

把官方的安装包搞下来,自己的PDF文件及index.html添加进去,上面的目录结构是未添加的,我先把PDF文件搞成canvas然后搞成图片,然后再图片上添加按钮对图片进行放大缩小操作,方便对用户行为进行录屏。 <!DOCTYPE HTML> <html data-dpr="1" style="…

mimikatz免杀过360和火绒

mimikatz mimikatz是一款能够从Windows认证&#xff08;LSASS&#xff09;的进程中获取内存&#xff0c;并且获取名闻密码和NTLM哈希值的工具&#xff0c;攻击者可以利用这种功能漫游内网。也可以通过明文密码或者hash值进行提权。这款工具机器出名所以被查杀的几率极高。 1、…

ibatis Parameter index out of range (1 number of parameters, which is 0)

这个错误除了网上常见的like写错之外&#xff0c;这里列出其中一种写法like concat(%, #keyword#, %),还有另外的多写单引号什么的以外&#xff0c;今天遇到另一个原因,百度谷歌各种查也没查到&#xff0c;最后才意识到由于我是在navicat中的写好的再粘贴上去的&#xff0c;注释…

SVN:请求不到主机,应该如何解决?

连了公司的局域网&#xff0c;可能一个账号人多的缘故&#xff0c;给你们讲一下思路。确保一点在同一个局域网。 然后ping一下域名。也是不通的 把域名换成IP进行访问试试&#xff0c;这个检查一下路径没有问题即可。

MSSQL提权

之前对MSSQL提权了解较少&#xff0c;所以在这里记录一些关于这类提权的几种姿势 1.xp_cmdshell提权 存储过程为数据库提供了强大的功能&#xff0c;其类似UDF&#xff0c;在MSSQL中xp_cmdshell可谓臭名昭著了。MSSQL强大的存储过程也为黑客提供了遍历&#xff0c;在相应的权…

如何以及为什么序列化Lambda

总览 lambda序列化在许多用例中很有用&#xff0c;例如持久配置或作为远程资源的访客模式 。 远程访客 例如&#xff0c;因此我想访问远程Map上的资源&#xff0c;可以使用get / put&#xff0c;但是说我只想从Map的值中返回一个字段&#xff0c;我可以将lambda作为访问者来传…

NSTimer注意内存泄露(真该死)

NSTimer可以用来执行一些定时任务&#xff0c;比较常用的方法就是&#xff1a; (NSTimer *)timerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)yesOrNo; 可是&#xff0c;仔细看官方文档中对于参数t…

Redis漏洞利用的4种方法

Redis简介 redis是一个key-value存储系统。和Memcached类似&#xff0c;它支持存储的value类型相对更多&#xff0c;包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash&#xff08;哈希类型&#xff09;。这些数据类型都支持push/pop、add/remov…

系统已有MYSQL环境,如何安装宝塔面板

最近一直想搞一个在线博客网站&#xff0c;把代码部署到服务器。 下载己经下载了宝塔的.exe文件,安装提示系统已经存在MYSQL环境&#xff0c;请用纯净系统安装。 因为我以前做java的&#xff0c;已经装了&#xff0c;现在把它卸载即可。 WINR打开注册表输入regedit。 删除HK…

Mysql命令alter add:增加表的字段

alter add命令用来增加表的字段。alter add命令格式&#xff1a;alter table 表名 add字段 类型 其他;例如&#xff0c;在表MyClass中添加了一个字段passtest&#xff0c;类型为int(4)&#xff0c;默认值为0&#xff1a; mysql> alter table MyClass add passtest int(4) …

宝塔命令号操作全-最实用的莫过于修改密码啦

连续输入五次密码错误&#xff0c;只能CMD进行操作啦。看上图。

swaks使用教程

Swaks基本用法&#xff1a; 1、swaks --to testqq.com 测试邮箱的连通性&#xff1b; 2、参数说明&#xff08;这里只是简单的罗列了一些&#xff0c;至于更加具体的内容可以使用–help进行查看了解&#xff09;&#xff1a; --from testqq.com //发件人邮箱&#xff1…