`
llbb2000go
  • 浏览: 945 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
最近访客 更多访客>>
社区版块
存档分类
最新评论

开发可在jboss5部署的web应用程序

    博客分类:
  • web
阅读更多

       首先要说明的是,我不是一个有着多年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();
		}
	}

 那么你就会碰到类似错误

 
java.io.FileNotFoundException: URL [vfsfile:/D:/server/jboss-5.0.0.Beta4/server/wits/deploy/wits-deployment-ear.ear/wits-wims-batch.jar/za/ac/wits/batch/] cannot be resolved to absolute file path because it does not reside in the file system: vfsfile:/D:/server/jboss-5.0.0.Beta4/server/wits/deploy/wits-deployment-ear.ear/wits-wims-batch.jar/za/ac/wits/batch/

 原因是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上部署web应用

    在JBoss中部署应用程序相当直观,只需要将部署单元复制到对应的部署目录(例如server/default/deploy)。JBoss会持续监控该目录,一旦发现新文件,就会自动进行部署。部署的文件可以是EJB JARs、Web应用WARs、企业...

    Jboss项目部署文档

    war文件是指 Web 应用程序的存档文件,可以包含项目的所有资源,例如 HTML、CSS、JavaScript 等文件。 四、项目部署 在部署 Jboss 项目时,需要将 war 文件解压到 Jboss 服务器的部署目录下,例如 D:\jboss-5.1.0....

    jboss7开发部署详细文档

    jboss7是一个基于Java EE的应用服务器,提供了一个强大且灵活的平台来开发和部署企业级应用程序。本文档旨在指导开发者如何在jboss7上进行开发和部署, 并且介绍了如何将jboss4.2版本平滑地移植到jboss7。 一、...

    jboss热部署配置

    在开发过程中,为了提高效率,我们通常希望在不中断应用服务的情况下更新部署的应用程序,这就是所谓的“热部署”配置。这篇博客将探讨如何在JBoss中实现热部署。 首先,理解热部署的基本原理是至关重要的。热部署...

    jboss内核(能运行web程序)

    在Java Web开发领域,JBoss内核扮演着至关重要的角色,它为开发者提供了一个强大、灵活且可扩展的平台来部署和管理Web应用程序。本文将深入探讨JBoss内核的功能特性,以及如何利用它来运行Web程序。 ### JBoss内核...

    JBOSS,JBoss安装部署

    JBoss是Red Hat公司开发的一款开源的应用服务器,它基于Java EE(Enterprise Edition)规范,提供了全面的企业级应用程序部署和管理解决方案。本篇文章将详细讲解JBoss的安装和部署过程,帮助你深入了解如何在本地...

    Jboss开发J2EE程序例

    通过上述步骤,你将能够熟练地在JBoss上开发和部署J2EE应用程序。不断实践和学习,你将成为J2EE开发的专家。记住,理解和掌握每个组件的工作原理以及它们之间的交互至关重要。祝你在J2EE开发的道路上取得成功!

    BO WEB应用程序部署指南

    - **在部署Web应用程序之前**:为了成功部署Web应用程序,需要准备一些前提条件,例如检查硬件和软件兼容性、验证网络配置等。 #### 5. 使用wdeploy进行部署 - **wdeploy概述**:wdeploy 是BusinessObjects ...

    JBoss部署Web Project时的问题——请刷新

    总之,理解并解决JBoss部署Web项目时的刷新问题,需要综合运用Eclipse的管理工具,对服务器的配置进行适当调整,并熟悉Web应用的生命周期管理。通过不断实践和学习,开发者可以更好地应对这类挑战。

    jboss-web.xml jndi.properties oracle-ds.xml

    首先,"jboss-web.xml"是JBoss特定的Web应用程序部署描述符,它是Tomcat中的web.xml在JBoss环境中的扩展。这个文件主要负责定义应用的Servlet、过滤器、监听器以及与EJB交互的JNDI(Java Naming and Directory ...

    jboss-as-web.Final-RECOMPILE.jar.rar

    JBoss AS 7通过其模块化架构实现了热部署,使得开发者可以实时更新Web应用程序,而无需重启服务器。 1. **热部署原理**:在传统的Java应用服务器中,更新部署的Web应用通常需要重启服务器。然而,JBoss AS 7引入了...

    J2EE应用服务器Jboss+Tomcat安装攻略

    而Tomcat则是一个轻量级的Servlet容器,主要处理HTTP协议,用于运行Web应用程序。当两者结合时,可以在Jboss上利用Tomcat来处理Servlet和JSP。 在Jboss中部署J2EE应用可能不如商业J2EE服务器那样直观,通常需要手动...

    jboss下部署ejb详细步骤

    在Java企业版(Java EE)应用开发中,Enterprise JavaBeans(EJB)是核心组件,用于构建可扩展、安全和事务处理的服务器端应用程序。本文将深入探讨在JBoss应用服务器上部署EJB的详细步骤,这对于理解Java EE架构和...

    jboss-web-3.0.0-beta-2.zip_beta_jboss_jboss web 3.0_jboss-web

    4. **安全管理**:JBoss Web 3.0.0可能包括了增强的安全特性,如JAAS(Java Authentication and Authorization Service)集成,提供用户认证和授权功能,以保护Web应用程序免受未经授权的访问。 5. **性能优化**:...

    Eclipse + Jboss 开发J2EE应用

    在服务器配置中启用远程调试端口,然后在Eclipse的调试视图中设置远程Java应用程序的调试配置,连接到JBoss,这样就可以在代码中设置断点进行调试了。 总的来说,Eclipse和JBoss的结合为Java开发者提供了一个高效且...

    Jboss上部署EJB方法

    5. JBoss中部署EJB的方法 有两种主要的EJB部署方式: - **方法一**:直接将ejb jar包和web应用war包放入`deploy`目录下。在这种情况下,不需要额外的jboss.xml文件,ejb-jar.xml文件中的`ejb-name`将用于查找EJB。...

    jboss 7.1.1 Final 的jsp热部署解决方案

    第二个需要修改的XML文件是`jboss-web.xml`,它通常位于每个Web应用程序的`WEB-INF`目录下。你需要创建这个文件(如果不存在),并添加以下内容: ```xml <jboss-web> <redeploy-reload-timeout>5000 </jboss-web>...

    jboss-web-2.1.0.GA.zip

    - **应用部署**:将WAR文件(Web应用程序归档)放入指定目录,例如`deploy`目录,自动完成部署。 - **日志系统**:通过日志文件进行问题排查,如`server.log`记录服务器运行信息。 - **调试工具**:可以使用IDE...

    使用jboss和eclipse建立j2ee应用程序

    本教程将详细介绍如何利用Eclipse集成开发环境(IDE)与JBoss应用服务器来创建和部署J2EE应用程序。 首先,让我们了解Eclipse。Eclipse是一款开源的IDE,它支持多种编程语言,包括Java。Eclipse拥有丰富的插件生态...

    精通JBoss——EJB与Web Services开发精解

    本书旨在帮助读者全面掌握如何在JBoss平台上进行高效、稳定的EJB组件开发以及Web Services的构建和部署。 JBoss是开源的Java应用服务器,它基于Java EE(Java Platform, Enterprise Edition)标准,提供了全面的...

Global site tag (gtag.js) - Google Analytics