`
duyangsss
  • 浏览: 127449 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Websphere中静态资源的过虑

 
阅读更多

     公司有一个B/S的项目,其中视图层是使用JSP+JAVASCRIPT的方式。控制层是使用的spring的MVC基于REST的规范来实现的,根据前台JS发出的POST请求URL及正文信息,找到相关的模域层的业务处理方法。模域层的实现是基于EJB3+JPA来实现的。控制层通过JNDI找到相关EJB服务进行调用来完成业务逻辑的处理。

    整个项目的工程是一个EAR包,其中包含一个WAR包和EJB的JAR包:

  •     视图层的JSP+AJAX和控制层都在WAR包中
  • 领域模型层都在EJB的JAR包中。

由于该项目一直都是在jboss上做的开发,现在项目要上线,需要将工程迁移到WEBSPHERE环境下。在迁移过程中遇到一个关于环境的问题,这个问题主要是关于控制层的。

由于前台的所有请求是基于REST的如系统登录,前台将会发出一个http://ip:port/project/login的POST请求,并在请求正文中传入登录所需要的数据信息。而前台请求的静态资源也是根据URL来获取,如:http://ip:port/project/login.css,http://ip:port/project/login.jpg 等。

所以我们需要在工程的web.xml文件中定义两个不同的servlet来处理,web.xml文件的具体内容如下:

	<servlet>
		<servlet-name>auth</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>auth</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>
	<servlet-mapping>
		<servlet-name>default</servlet-name>
		<url-pattern>*.css</url-pattern>
	</servlet-mapping>

	<servlet-mapping>
		<servlet-name>default</servlet-name>
		<url-pattern>*.gif</url-pattern>
	</servlet-mapping>

	<servlet-mapping>
		<servlet-name>default</servlet-name>
		<url-pattern>*.png</url-pattern>
	</servlet-mapping>

	<servlet-mapping>
		<servlet-name>default</servlet-name>
		<url-pattern>*.js</url-pattern>
	</servlet-mapping>
	
	<servlet-mapping>
		<servlet-name>default</servlet-name>
		<url-pattern>*.jpg</url-pattern>
	</servlet-mapping>
	
	<servlet-mapping>
		<servlet-name>default</servlet-name>
		<url-pattern>*.html</url-pattern>
	</servlet-mapping>
	
	<servlet-mapping>
		<servlet-name>default</servlet-name>
		<url-pattern>*.data</url-pattern>
	</servlet-mapping>

 

其中有一个org.springframework.web.servlet.DispatcherServlet,它会拦截前台的请求,通过HTTP请求中的URL路径及方法来判断是不是调用后台的业务逻辑处理。

还有一个就是jboss的获取servlet。具体的servlet的类名是什么,开发人员不需要关心,只需要在web.xml文件中直接使用就可以通过它来处理静态资源。网上的资源中的说法是:

Tomcat, Jetty, JBoss, and GlassFish 自带的默认Servlet的名字 -- "default"

Google App Engine 自带的 默认Servlet的名字 -- "_ah_default"

Resin 自带的 默认Servlet的名字 -- "resin-file"

WebLogic 自带的 默认Servlet的名字 -- "FileServlet"

WebSphere 自带的 默认Servlet的名字 -- "SimpleFileServlet"

所以,我在发布到websphere的工程中将名称改为:SimpleFileServlet,

	<servlet-mapping>
		<servlet-name>SimpleFileServlet</servlet-name>
		<url-pattern>*.jpg</url-pattern>
	</servlet-mapping>
	
	<servlet-mapping>
		<servlet-name>SimpleFileServlet</servlet-name>
		<url-pattern>*.html</url-pattern>
	</servlet-mapping>
	
	<servlet-mapping>
		<servlet-name>SimpleFileServlet</servlet-name>
		<url-pattern>*.data</url-pattern>
	</servlet-mapping>
.......

 

但后台抛出异常,大概意思就是说服务在发布的时间,在加载servlet的时候报空指针异常。后面能过资料查找和测试,正解如下:

<servlet>
	<servlet-name>default</servlet-name>
	<servlet-class>com.ibm.ws.webcontainer.servlet.SimpleFileServlet</servlet-class>
	<load-on-startup>2</load-on-startup>
</servlet>

	<servlet-mapping>
		<servlet-name>default</servlet-name>
		<url-pattern>*.css</url-pattern>
	</servlet-mapping>

	<servlet-mapping>
		<servlet-name>default</servlet-name>
		<url-pattern>*.gif</url-pattern>
	</servlet-mapping>

	<servlet-mapping>
		<servlet-name>default</servlet-name>
		<url-pattern>*.png</url-pattern>
	</servlet-mapping>

	<servlet-mapping>
		<servlet-name>default</servlet-name>
		<url-pattern>*.js</url-pattern>
	</servlet-mapping>
	
	<servlet-mapping>
		<servlet-name>default</servlet-name>
		<url-pattern>*.jpg</url-pattern>
	</servlet-mapping>
	
	<servlet-mapping>
		<servlet-name>default</servlet-name>
		<url-pattern>*.html</url-pattern>
	</servlet-mapping>
	
	<servlet-mapping>
		<servlet-name>default</servlet-name>
		<url-pattern>*.data</url-pattern>
	</servlet-mapping>
	
	<servlet id="auth">
		<servlet-name>auth</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping id="auth-mapping">
		<servlet-name>auth</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>

 

让was的静态处理的servlet后加载,spring的servlet先加载。并且将was的静态处理的servlet放在spring的servlet的前面。保证所有的请求先由was的servlet先处理。

分享到:
评论

相关推荐

    websphere上web应用发布

    - **资源绑定**:如数据源、JMS队列等需要在WebSphere中正确配置并绑定到Web应用。 - **安全性**:设置用户角色和权限,实现Web应用的安全访问。 - **日志和跟踪**:启用日志和跟踪可以帮助诊断应用运行时的问题。 -...

    J2EE gzip压缩

    其中,gzip压缩技术就是一种常见的优化手段,它能显著地减小HTML、JavaScript、CSS等静态资源的大小,从而提高页面加载速度,提升用户体验。本文将详细介绍如何在J2EE环境中实现gzip压缩,并探讨其原理与最佳实践。 ...

    apache-tomcat7.0.40

    此外,Tomcat还可以与其他缓存系统集成,如Ehcache,以存储静态资源,减少服务器负载。 在日志和监控方面,Tomcat提供了一套详细的日志记录机制,可以帮助开发者诊断和解决问题。它还支持JMX(Java Management ...

    javaweb基础知识整理.doc

    一个典型的Web应用目录结构包括静态资源(HTML、CSS、JS、JSP)、WEB-INF(包含classes目录——运行时的class文件,lib目录——依赖的JAR包,以及web.xml——整个Web应用的配置文件)。web.xml文件是Web应用的核心...

    J2EE系统部署,项目实例

    WAR用于Web应用程序,包含Servlet、JSP和静态资源;EAR用于整个企业应用,可以包含多个WAR、EJB JAR和其他资源。 2. **服务器配置**:选择合适的J2EE应用服务器,如Tomcat、Jetty、WebLogic或WebSphere,然后在...

    [其他类别]UrlRewriter Java v2.0 RC1_urlrewriterjava.rar

    URL重写技术在现代Web开发中扮演着重要角色,因为它能将复杂的动态URL转化为简洁、静态化的形式,从而提高用户体验和搜索引擎对网站内容的抓取效率。 这个版本(RC1)是Release Candidate 1,意味着它是正式版发布...

    apache-tomcat-7.0.70

    8. **性能优化**:包括调整线程池大小、设置JVM堆大小、开启连接器的压缩功能、缓存静态资源等,都是提高Tomcat性能的有效手段。 9. **管理工具**:Tomcat内建了一个Web管理界面,位于`webapps/manager`和`webapps/...

    基于Java的应用服务器 Tomcat.zip

    - **性能优化**:调整线程池大小,启用连接器的NIO模式,开启GZIP压缩,缓存静态资源等。 ## 7. 故障排查与日志 Tomcat的日志文件位于`CATALINA_HOME/logs`目录下,包括catalina.out、host-manager、manager等。...

    richfaces开发指南(英文版)

    - **资源管理**:RichFaces允许你管理和优化CSS、JavaScript以及其他静态资源的加载,以提高页面性能。 - **国际化和本地化**:RichFaces支持多语言应用,可以通过配置faces-config.xml来指定语言资源。 **5. ...

    BIRT使用经验谈.doc

    用户可以获取免费的插件、教程和示例,同时,社区中的问题解答和经验分享也是学习BIRT的重要资源。 尽管BIRT在某些方面可能不如商业报表工具完善,但其开源特性、强大的功能和广泛的社区支持,使其成为许多企业和...

    JSP项目.rar

    5. **配置文件**:项目中可能有web.xml文件,这是Web应用的部署描述符,用于配置Servlet、过滤器、监听器以及其他组件。此外,还有可能包含其他配置文件,如application.properties或context.xml,用于配置应用的...

    山东建筑大学J2EE讲义

    - **1.4.1 J2EE应用服务器**:J2EE应用服务器是运行J2EE应用程序的平台,常见的有Apache Tomcat、IBM WebSphere、Oracle WebLogic等。 - **1.4.2 J2EE开发环境搭建**:一般包括安装Java JDK、配置J2EE应用服务器以及...

    应用交付网络与CDN

    3. **中间件优化**:对WebLogic/WebSphere等中间件进行优化和负载均衡,根据系统资源分配负载,并实现高级监控和连接优化。 4. **数据库优化**:优化后端数据库以处理大量并发请求。 5. **存储网络优化**:利用SAN和...

    J2EE经典教程

    - **5.4.2 包含指令include**:静态包含其他JSP页面或资源。 - **5.4.3 taglib指令**:声明自定义标签库。 ##### 5.5 JSP脚本元素 - `&lt;% %&gt;`:执行Java代码。 - `! %&gt;`:声明变量或方法。 - `&lt;%= %&gt;`:输出表达式的...

    JAVA基础面试题全

    - 定义了Web应用程序的初始化参数、过滤器、监听器等。 - 支持基于角色的安全认证配置。 - 可以配置基于表单的身份验证。 - **MVC设计模式**: - **Model**: 负责处理应用程序的数据和逻辑。 - **View**: 显示...

Global site tag (gtag.js) - Google Analytics