首先要说明的是,我不是一个有着多年jboss实践经验的高手,事实上我是一个在1个月前才开始jboss实战的菜鸟,并且一个星期以后至今再也没有碰过,一切始于我们的新客户要求把我们的产品部署到他们的jboss服务器上,实施和项目开发的同事在客户那部署时傻了眼。在jetty,tomcat、oc4j、weblogic上我们可都部署过,咋在jboss上就不行了呢?于是这个光荣的任务就到了我这里,也就有了这篇总结。
部署jboss5遇到的第一个问题就是包冲突。jboss5有强烈的洁癖,她不喜欢项目里有和她提供相同的jar包,也没兴趣搞复杂的加载策略,虽然网上告诉你jboss5有几个配置点可以优先加载项目class,比如war-deployers-jboss-beans.xml,可我告诉你最好的办法是检查一遍你的部署包,把jboss5已经有的jar都干掉,因为你要部署的jboss服务器很有可能不是你家的,别人不准你碰。一般包括commons-logging、log4j、servlet、jsp-api、jstl、commons-el。
部署jboss5的第二个问题就是那堵看不见的墙——VFS。jboss定义了自身的文件系统接口,将应用程序与实际的文件系统隔离开来。幸运的是VFS比较透明,一般情况下你甚至不知道有这么回事,比如下面的代码在jboss上和在其他中间件上面都可正常运行:
public class FileUtil { public static URL getConfigUrl() { URL aUrl = FileUtil.class.getClassLoader().getResource("com/test/config/bi/a.bi.xml"); return aUrl; } public static InputStream getConfigInputstream() { InputStream in = FileUtil.class.getClassLoader().getResourceAsStream("com/test/config/bi/a.bi.xml"); return in; } }
可是你如果想做个比较炫的功能,比如遍历classpath下某个目录中所有的配置文件,然后自动加载:
public void loadConfigs(){ URL folderUrl = FileUtil.class.getClassLoader().getResource("com/test/config/bi"); try { File folder = new File(folderUrl.toURI()); File[] configs = folder.listFiles(); for (File file : configs) { // load config file //... } } catch (URISyntaxException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
那么你就会碰到类似错误
原因是vfsfile、vfszip之类的协议,是不被默认支持的,你需要使用jboss提供的jboss-vfs.jar中的工具类VFSUtils来进行向标准协议头file的转换。但是如此一来你的程序就强依赖jboss了,所以只能修改这类功能,不要追求这种自动化。
部署jboss5的第三个问题是——没有程序是完美的,jboss本身也是,但是可怕的是这个程序再也没人去维护。jboss5已经发布final版本,意味着后续的bug只能靠爱好者们来修复了,而这就有个高几率出现的bug等着你。
public static void readData(HttpServletRequest request) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader( request.getInputStream())); StringBuffer responseData = new StringBuffer(); String line = ""; while ((line = br.readLine()) != null) { responseData.append(line); } //。。。。 }
从request中获取流,然后读出并处理,当我们定义自己的数据格式的时候常这么做,但是在jboss5会报下面的错误:
java.lang.IllegalArgumentException at java.nio.Buffer.position(Buffer.java:218) at org.apache.tomcat.util.buf.B2CConverter.convert(B2CConverter.java:84)
这不是你程序的问题,是jboss的bug,你需要社区提供的补丁,补上邮件列表
https://issues.jboss.org/browse/JBAS-7817。
类似的问题还有很多,jboss是个很屌丝的框架。
以上就是我这次短暂的jboss之旅的心得,有感于相关中文资料缺乏,各大中文论坛几乎无解,留下几笔,希望将来大家部署jboss的时候能少走弯路。
相关推荐
在JBoss中部署应用程序相当直观,只需要将部署单元复制到对应的部署目录(例如server/default/deploy)。JBoss会持续监控该目录,一旦发现新文件,就会自动进行部署。部署的文件可以是EJB JARs、Web应用WARs、企业...
war文件是指 Web 应用程序的存档文件,可以包含项目的所有资源,例如 HTML、CSS、JavaScript 等文件。 四、项目部署 在部署 Jboss 项目时,需要将 war 文件解压到 Jboss 服务器的部署目录下,例如 D:\jboss-5.1.0....
jboss7是一个基于Java EE的应用服务器,提供了一个强大且灵活的平台来开发和部署企业级应用程序。本文档旨在指导开发者如何在jboss7上进行开发和部署, 并且介绍了如何将jboss4.2版本平滑地移植到jboss7。 一、...
在开发过程中,为了提高效率,我们通常希望在不中断应用服务的情况下更新部署的应用程序,这就是所谓的“热部署”配置。这篇博客将探讨如何在JBoss中实现热部署。 首先,理解热部署的基本原理是至关重要的。热部署...
在Java Web开发领域,JBoss内核扮演着至关重要的角色,它为开发者提供了一个强大、灵活且可扩展的平台来部署和管理Web应用程序。本文将深入探讨JBoss内核的功能特性,以及如何利用它来运行Web程序。 ### JBoss内核...
JBoss是Red Hat公司开发的一款开源的应用服务器,它基于Java EE(Enterprise Edition)规范,提供了全面的企业级应用程序部署和管理解决方案。本篇文章将详细讲解JBoss的安装和部署过程,帮助你深入了解如何在本地...
通过上述步骤,你将能够熟练地在JBoss上开发和部署J2EE应用程序。不断实践和学习,你将成为J2EE开发的专家。记住,理解和掌握每个组件的工作原理以及它们之间的交互至关重要。祝你在J2EE开发的道路上取得成功!
- **在部署Web应用程序之前**:为了成功部署Web应用程序,需要准备一些前提条件,例如检查硬件和软件兼容性、验证网络配置等。 #### 5. 使用wdeploy进行部署 - **wdeploy概述**:wdeploy 是BusinessObjects ...
总之,理解并解决JBoss部署Web项目时的刷新问题,需要综合运用Eclipse的管理工具,对服务器的配置进行适当调整,并熟悉Web应用的生命周期管理。通过不断实践和学习,开发者可以更好地应对这类挑战。
首先,"jboss-web.xml"是JBoss特定的Web应用程序部署描述符,它是Tomcat中的web.xml在JBoss环境中的扩展。这个文件主要负责定义应用的Servlet、过滤器、监听器以及与EJB交互的JNDI(Java Naming and Directory ...
- **应用部署**:将WAR文件(Web应用程序归档)放入指定目录,例如`deploy`目录,自动完成部署。 - **日志系统**:通过日志文件进行问题排查,如`server.log`记录服务器运行信息。 - **调试工具**:可以使用IDE...
JBoss AS 7通过其模块化架构实现了热部署,使得开发者可以实时更新Web应用程序,而无需重启服务器。 1. **热部署原理**:在传统的Java应用服务器中,更新部署的Web应用通常需要重启服务器。然而,JBoss AS 7引入了...
而Tomcat则是一个轻量级的Servlet容器,主要处理HTTP协议,用于运行Web应用程序。当两者结合时,可以在Jboss上利用Tomcat来处理Servlet和JSP。 在Jboss中部署J2EE应用可能不如商业J2EE服务器那样直观,通常需要手动...
在Java企业版(Java EE)应用开发中,Enterprise JavaBeans(EJB)是核心组件,用于构建可扩展、安全和事务处理的服务器端应用程序。本文将深入探讨在JBoss应用服务器上部署EJB的详细步骤,这对于理解Java EE架构和...
4. **安全管理**:JBoss Web 3.0.0可能包括了增强的安全特性,如JAAS(Java Authentication and Authorization Service)集成,提供用户认证和授权功能,以保护Web应用程序免受未经授权的访问。 5. **性能优化**:...
在服务器配置中启用远程调试端口,然后在Eclipse的调试视图中设置远程Java应用程序的调试配置,连接到JBoss,这样就可以在代码中设置断点进行调试了。 总的来说,Eclipse和JBoss的结合为Java开发者提供了一个高效且...
5. JBoss中部署EJB的方法 有两种主要的EJB部署方式: - **方法一**:直接将ejb jar包和web应用war包放入`deploy`目录下。在这种情况下,不需要额外的jboss.xml文件,ejb-jar.xml文件中的`ejb-name`将用于查找EJB。...
第二个需要修改的XML文件是`jboss-web.xml`,它通常位于每个Web应用程序的`WEB-INF`目录下。你需要创建这个文件(如果不存在),并添加以下内容: ```xml <jboss-web> <redeploy-reload-timeout>5000 </jboss-web>...
本教程将详细介绍如何利用Eclipse集成开发环境(IDE)与JBoss应用服务器来创建和部署J2EE应用程序。 首先,让我们了解Eclipse。Eclipse是一款开源的IDE,它支持多种编程语言,包括Java。Eclipse拥有丰富的插件生态...
本书旨在帮助读者全面掌握如何在JBoss平台上进行高效、稳定的EJB组件开发以及Web Services的构建和部署。 JBoss是开源的Java应用服务器,它基于Java EE(Java Platform, Enterprise Edition)标准,提供了全面的...