`
gavin213
  • 浏览: 34189 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

(已结贴) WebSphere下spring 的上下文加载问题

阅读更多
   目前用Spring+Axis 完成了一WS项目,在tomcat下测试并顺利完成需求功能,但在WebSphere下部署时出现无法加载上下文的问题,也即ApplicationContext无法初始化,致使整个WS工程无法使用。下面是配置文件及初始化部分源码,请各位指教一二:
    web.xml
  
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
	http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>
			/WEB-INF/classes/applicationContext-service.xml, /WEB-INF/classes/applicationContext-dao.xml, /WEB-INF/classes/applicationContext-jdbc.xml
		</param-value>
	</context-param>

	<context-param>
		<param-name>webAppRootKey</param-name>
		<param-value>PIRCClient</param-value>
	</context-param>

	<context-param>
		<param-name>log4jConfigLocation</param-name>
		<param-value>WEB-INF/classes/log4j.properties</param-value>
	</context-param>

	<context-param>
		<param-name>log4jRefreshInterval</param-name>
		<param-value>600000</param-value>
	</context-param>

	<listener>
		<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
	</listener>

	<listener>
		<listener-class>org.springframework.web.util.WebAppRootListener</listener-class>
	</listener>

	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
       .......
    <servlet>
		<servlet-name>PIRCClientSysInit</servlet-name>
		<servlet-class>com.dragonsoft.pircclient.sys.PIRCClinetSysInit</servlet-class>
		<load-on-startup>2</load-on-startup>
	</servlet>
   

  PIRCClientSysInit是随服务器启动加载上下文的入口,问题也出在这里,其代码如下:
PIRCClientSysInit.java:
   package com.dragonsoft.pircclient.sys;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;

import org.apache.log4j.Logger;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.dragonsoft.pircclient.service.SysConfigureBufferedService;

public class PIRCClinetSysInit extends HttpServlet {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = -2344733689247434124L;
	static private Logger log = Logger.getLogger(PIRCClinetSysInit.class);

	/**
	 * 容器启动时进行初始化
	 *
	 * @throws ServletException if an error occure
	 */
	public void init() throws ServletException {
		
		log.info("系统开始初始化...");
		ApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(this.getServletContext());
//WebSphere下会停留此处				
		log.info("系统初始化上下文结束...");
		ServiceLocator.init(ctx);		
		//系统参数初始化
		SysConfigureBufferedService.init();
		log.info("系统初始化结束!");
	}
	
}



   在WebSphere下该WS工程日志会一直停留在“系统开始初始化...”,不会再向下进行进一步初始化,而在tomcat下不会存在这个问题。估计是ApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(this.getServletContext());加载的问题,请了解的不吝赐教,谢谢~!
   我WebSphere是6.0.
分享到:
评论
4 楼 gavin213 2008-03-25  
自己搞定了。把解决方法帖上来:
发帖时没把错误日志弄上来,失误!难怪没人回解决办法,错误日志:
[08–3−20 18:44:03:469 CST] 00000036 ServletWrappe E SRVE0100E: 未识别出由 servlet context 抛出的 init() 异常:org.springframework.beans.FatalBeanException: Unable to determine validation mode for ServletContext resource [/WEB-INF/classes/applicationContext-jdbc.xml]. Did you attempt to load directly from a SAX InputSource?; nested exception is sun.io.MalformedInputException: null sun.io.MalformedInputException

at sun.io.ByteToCharGB18030.convert(ByteToCharGB18030.java(Compiled Code))
at sun.nio.cs.StreamDecoder$ConverterSD.convertInto(StreamDecoder.java(Inlined Compiled Code))
at sun.nio.cs.StreamDecoder$ConverterSD.implRead(StreamDecoder.java(Compiled Code))
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java(Compiled Code))
at java.io.InputStreamReader.read(InputStreamReader.java(Compiled Code))
at java.io.BufferedReader.fill(BufferedReader.java(Compiled Code))
at java.io.BufferedReader.readLine(BufferedReader.java(Compiled Code))
at java.io.BufferedReader.readLine(BufferedReader.java(Compiled Code))
        …….
at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminaters(NewConnectionInitialReadCallback.java:207)
at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:109)
at com.ibm.ws.tcp.channel.impl.WorkQueueManager.requestComplete(WorkQueueManager.java:566)
at com.ibm.ws.tcp.channel.impl.WorkQueueManager.attemptIO(WorkQueueManager.java(Compiled Code))
at com.ibm.ws.tcp.channel.impl.WorkQueueManager.workerRun(WorkQueueManager.java:952)
at com.ibm.ws.tcp.channel.impl.WorkQueueManager$Worker.run(WorkQueueManager.java:1039)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java(Compiled Code))


这个异常产生的原因是IBM在JDK 1.4版本中为了追求对io通道的高效率改变了JDK 1.3中对io通道中异常处理的策略。IBM JDK 1.4中对于io通道的异常处理更加严格,因此系统中会报上面的错误。 解决这一问题的办法是不使用IBM JDK 1.4中默认的io通道,而使用nio通道。具体的做法如下:
1.打开管理控制台,找到并选择运行这个JSP的应用服务器
2.依次选择进程定义,java虚拟机,一般JVM自变量
3.添加-Dibm.stream.nio=true
4.确定,保存
5.重新启动该服务器
3 楼 gavin213 2008-03-20  
没人碰到过这种情况吗?
把ContextLoaderListener 改为ContextLoaderServlet实现,同样解决不了问题...
2 楼 gavin213 2008-03-20  
如果是那样问题就大条了,客户那边据说只有WAS,搞不定这个不就等于白忙活了.....郁闷了
1 楼 yyjn12 2008-03-20  
我们以前遇到过 tomcat 没问题,websphere无法启动项目的情况.

后来是问了IBM的工程师.在他们的帮助下搞定了问题.

我们那次是websphere本身的问题.IBM给了个补丁,打上好了.

并且IBM工程师说那个补丁还未公开发布...

相关推荐

    Windows下WebSphere安装手册

    - 在WebSphere控制台中部署企业应用程序,选择本地文件,设置上下文根,启用类重新加载。 6. **调试与开发**: - 删除MyEclipse中第三步创建的发布,改为使用Exploded Archive方式发布到`installedApps`目录,...

    WebSphere6.1+myeclipse6.0+ssh2整合手册

    2. 引入Spring:在web.xml中配置ContextLoaderListener,加载Spring的上下文,定义Spring的配置文件路径。 3. 集成Hibernate:配置Hibernate的session工厂,将SessionFactory作为bean注入到需要的地方,同时配置数据...

    WebSphere部署war项目

    在WebSphere管理控制台中,部署企业应用程序,选择WAR文件,设置上下文根,启用类重新加载,然后发布应用程序。最后,通过浏览器验证应用程序是否成功部署。 此外,有时可能需要使用非官方的JDBC驱动,如JTDS驱动来...

    Websphere6.0应用部署文档

    在部署过程中,可能会遇到各种问题,如Spring上下文加载问题、Bean定义存储异常等,需要仔细分析错误日志,调整配置或更新依赖来解决。对于Websphere来说,理解并熟练掌握这些部署步骤是确保应用稳定运行的关键。...

    webSphere 项目发布介绍及连接数据库配置

    4. 应用上下文配置:在你的应用程序中,通过 JNDI 查找数据源,例如使用 Spring 框架,可以在配置文件中声明: ```xml ``` 5. 连接池设置:为了提高性能和资源利用率,WebSphere 使用连接池来管理数据库连接。...

    Spring2.5.6 参考文档

    - **作为JCA适配器部署Spring应用上下文**:支持将Spring应用上下文作为JCA适配器进行部署,便于与其他企业级中间件进行集成。 - **任务调度**:引入了任务调度功能,支持定时任务的执行。 - **Java 5 (Tiger) 支持*...

    WebSphere快速入门

    部署过程中,需要设置应用程序的上下文根、类加载器策略和安全角色。 6. **安全性** WebSphere提供了多种安全机制,包括基本认证、LDAP集成、SSL/TLS加密、JAAS(Java Authentication and Authorization Service)...

    Spring中文帮助文档

    2.6.4. 将Spring 应用程序上下文部署为JCA adapter 2.6.5. 计划任务 2.6.6. 对Java 5 (Tiger) 支持 2.7. 移植到Spring 2.5 2.7.1. 改变 2.8. 更新的样例应用 2.9. 改进的文档 I. 核心技术 3. IoC(控制反转)...

    Spring API

    2.6.4. 将Spring 应用程序上下文部署为JCA adapter 2.6.5. 计划任务 2.6.6. 对Java 5 (Tiger) 支持 2.7. 移植到Spring 2.5 2.7.1. 改变 2.8. 更新的样例应用 2.9. 改进的文档 I. 核心技术 3. IoC(控制反转)...

    spring-framework-3.1.0.M2

    `org.springframework.context-3.1.0.M2.jar`是Spring的核心上下文模块,提供了IoC(Inversion of Control)容器和AOP(Aspect Oriented Programming)的支持,是整个Spring框架的基础。 `org.springframework....

    spring reference

    - **作为JCA适配器部署Spring应用上下文**:支持将Spring应用上下文作为JCA适配器部署,增强了集成能力。 - **任务调度**:引入了任务调度功能,便于定时执行任务。 - **Java 5 (Tiger) 支持**:支持Java 5,充分...

    Spring Framework 2.5

    - **作为 JCA 适配器部署 Spring 应用上下文**:支持将 Spring 上下文作为 JCA 适配器部署到 ESB 或其他环境,增强了与外部系统的集成能力。 - **任务调度**:引入了任务调度功能,支持定时任务的执行。 - **Java 5 ...

    webservice五种发布方式及客户端调用.pdf

    - **配置web.xml**:设置Spring上下文加载监听器、字符编码过滤器以及CXFServlet的映射。 - **编写接口和服务实现**:使用@WebService注解定义接口和实现类,指定接口名称和服务名。 2. **Axis2方式** Axis2是另...

    TomCat

    4. **配置管理**:TomCat的配置主要通过`server.xml`、`context.xml`、`web.xml`等XML文件进行,这些文件定义了服务器的行为、应用上下文和Web应用程序的部署信息。 5. **安全管理**:TomCat支持基本的身份验证和...

    apache-tomcat-7.0.75

    2. 设置了正确的Context配置,以便识别和加载Dubbo应用的Web上下文。 3. 可能已经安装了JNDI服务,因为Dubbo的配置中经常使用JNDI查找服务提供者。 4. 如果使用了Zookeeper作为注册中心,Tomcat可能配置了相应的连接...

    IBM portlet开发指南

    在IBM WebSphere Portal环境下搭建开发环境,以及在Apache Pluto Portal环境下搭建开发环境,是开发Portlet应用的先决条件。快速入门部分可能涉及了基础的配置和测试步骤。 #### Portlet概念 Portlet定义了Portal...

    JAVA笔试题

    - **application**: 应用程序上下文对象,用于存储全局变量。 - **page**: 当前JSP页面本身。 - **pageContext**: 提供了一种方式来访问其他内置对象的方法。 #### 6. 使用JNI实现一个HelloWorld的步骤是? 1. ...

Global site tag (gtag.js) - Google Analytics