SSH配置詳細步驟及異常處理

Technorati 標籤: SSH,hibernate,struts,spring

 

SSH配置詳細步驟及異常處理
該文章詳細介紹了SSH的配置步驟與工程代碼。
配置步驟見:http://blog.csdn.net/sipsir/archive/2009/10/23/4721526.aspx
代碼下載:http://sipsir.download.csdn.net/

本文word格式:http://download.csdn.net/source/1764763

 

1 環境介紹

Jdk:1.5s

服務器:tomcat5.5

開發工具:myeclipse 6.5 ga

數據庫工具:oracle 10g(確定有class12.jar或帶有oracle驅動的jar包)

開發技術:Spring2.0,struts1.3,hibernate3.1,jsp

好了,進行SSH的開發。

 

 

2 新建web project

新建web項目(使用j2ee 5.0),項目名稱爲guestbook2,如圖:

clip_image002

(圖一)

第二步:爲項目創建一個文件夾lib(用來將來存放相應的jar包,在添加相應的SSH支持後,要把lib裏面的jar通過configure build-path—add jar的方式將其加入),

--可以採用系統默認的lib庫位置,目錄爲WebRoot/WEB-INF/lib(Add by Michael)

如圖:

clip_image004

(圖二)

3 配置MyEclipse數據庫(Add by Michael)

打開Hibernate視圖

clip_image006

new一個

clip_image008

配置數據庫,其中要手動指定Class12.jar的目錄,如下圖

clip_image010

4 添加hibernate支持

第1步:爲項目添加hibernate 支持,如圖:

clip_image012

(圖三)

如下圖,我們添加hibernate3.1的核心庫而且採用:copy checked library jars to project folder and add to build-path 的方式把包添加至我們剛剛新建的lib文件夾處。完成後,點擊”next”.

hibe

clip_image014

接着,他會詢問是否創建hibernate的配置文件:hibernate.cfg.xml,我們不需要發動,直接點”next”。

clip_image016

我們需要配置項目中要應用的數據庫的配置信息:

clip_image018

在上圖中,我使用了名爲DB Driver 爲Linkoracle10g的連接方式(可使用myeclipse的myeclipse database explorer方式來創建與oracle10g的連接),相應地,myeclipse會使項目具有與oracle數據庫連接的能力了。

接着點”next”,會看見如下圖:

clip_image020

默認是挑選了“create SessionFactory class”的,在這裏,它想爲我們創建一個sessionfactory的類,但我們不創建sessionfactory,因爲我將來使用spring來完成這步操作,使用spring ,可以幫助我們可以生成一個能獲得hibernate session對象的一個類。

點擊”finish”完成的hibernate的支持。

5 添加Spring支持

第1步:爲項目添加Spring 支持,如圖:

clip_image022

在這裏,我使用spring2.0的支持,把相應的四個選項選中:

clip_image024

第四個爲:

clip_image025

--選擇了spring2.0,如何選擇sping2.5的jar?實際情況是我沒有選擇spring2.5也能完成這個測試(Add by Michael)

而且,我們採用:copy checked library jars to project folder and add to build-path 的方式把包添加至我們剛剛新建的lib文件夾處。完成後,如圖:

clip_image027

完成後,點擊”next”.會看到如下圖:(Myeclipse會爲我們創建spring的配置文件,我們確定創建)

clip_image029

點擊”next”.進入下一步。這時會看到,如圖:

clip_image031

在上圖中,他會創建一個能獲得hibernate session 對象的一個sessionFactory 類型的對象,他被設置在了applicationContext.xml文件中。

點擊“finish”,完成Spring 的支持了。

備註:打開applicationContext.xml文件,源碼如下:
<?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-2.0.xsd">

<bean id="sessionFactory"

class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

<property name="configLocation"

value="classpath:hibernate.cfg.xml">

</property>

</bean>

</beans>

在這裏,我們發現設置了一個id爲sessionFactory類型的一個對象,他的類型是 org.springframework.orm.hibernate3.LocalSessionFactoryBean,當中還有屬性configLocation,value="classpath:hibernate.cfg.xml,這些配置信息呢。實際上可以這樣理解:

設定了一個id爲sessionFactory 類型的對象,它的類型是:org.springframework.orm.hibernate3.LocalSessionFactoryBean的,通過這個對象就能獲取hibernate 的session 對象,進行完成對數據的添加、刪除、修改的操作。也就是說這個對象是spring 幫我們提供的一個支持.

6 開發持久層的這些類和接口

6.1 oracle表SQL

增加了hibernate ,spring的支持後,我們就可以開發持久層的這些類和接口了。首先,我們的項目要用到了guestbook、admin兩個表,所以要使用oracle來創建這兩個表,表的創建的sql提供給大家,如下所示:

create table ADMIN

(

ID NUMBER not null,

USERNAME VARCHAR2(20),

PASSWORD VARCHAR2(20)

);

alter table ADMIN add constraint ADMIN_PK primary key (ID);

create table GUESTBOOK

(

ID NUMBER not null,

NAME VARCHAR2(40),

EMAIL VARCHAR2(60),

URL VARCHAR2(60),

TITLE VARCHAR2(200),

CONTENT VARCHAR2(2000),

TIME VARCHAR2(40)

);

alter table GUESTBOOK add constraint GBOOK_PK primary key (ID);

insert into ADMIN (ID, USERNAME, PASSWORD)

values (1, 'liuwei', '123456');

commit;

insert into GUESTBOOK (ID, NAME, EMAIL, URL, TITLE, CONTENT, TIME)

values (100026, '劉偉', '[email protected]', 'http://www.v512.com', '歡迎大家觀看我的視頻', '感謝大家對我們的支持,請持續關注我們的網站。更多內容,更多視頻,盡在www.v512.com。', '2007-16-14 02:12:51');

insert into GUESTBOOK (ID, NAME, EMAIL, URL, TITLE, CONTENT, TIME)

values (1000072, '開發工具與軟件', null, 'http://news.sina.com.cn', '我們愛大家', '開發工具與軟件開發工具與軟件開發工具與軟件開發工具與軟件,我們愛大家我們愛大家我們愛大家我們愛大家我們愛大家我們愛大家我們愛大家我們愛大家我們愛大家。', '2007-42-20 01:12:17');

insert into GUESTBOOK (ID, NAME, EMAIL, URL, TITLE, CONTENT, TIME)

values (1000074, '開發工具與軟件', '[email protected]', 'http://news.sina.com.cn', '我們愛大家', '開發工具與軟件開發工具與軟件開發工具與軟件開發工具與軟件,我們愛大家我們愛大家我們愛大家我們愛大家我們愛大家我們愛大家我們愛大家我們愛大家我們愛大家。', '2007-50-20 02:12:52');

commit;

而且還應該在oracle10g中創建名爲gb_seq的序列,sql語句爲:(有問題,在哪裏創建sequence的?)

我只用了一個創建sequence的SQL,如下:

create sequence GB_SEQ

minvalue 1

maxvalue 99999999

start with 1

increment by 1

cache 20;

以下是原作者關於sequence的sql,我都沒有使用因爲不知道在哪裏create。

-- Alter sequence

alter sequence gb_seq

nominvalue

nomaxvalue

nocache;

-- Modify the last number

alter sequence gb_seq increment by -20 nocache;

select gb_seq.nextval from dual;

alter sequence gb_seq increment by 1 nocache;

declare

LastValue integer;

begin

loop

select gb_seq.currval into LastValue from dual;

exit when LastValue >= 100000 - 1;

select gb_seq.nextval into LastValue from dual;

end loop;

end;

/

alter sequence gb_seq increment by 1 nocache;

(備註:在創建數據庫的表時,我是使用了PLSQLDeveloper工具來創建的,這樣更方便快捷些,要使用這個工具,請自行下載。)

好了,接着做下去。

6.2 生成Admin,guestbook表model

首先,我們打開myeclipse database explorer 視圖,在這裏,我們進行逆向工程的操作,如圖:

clip_image033

這樣就打開了逆向工程的操作的界面了。

接着,我們會看到如下的操作界面,如圖:

clip_image035

使用如上圖的設置,com.v512.guestbook.model存放的是映射文件和相應的實體類(POJO),再點擊”next”.

這時,會出現操作界面,如下圖:

clip_image037

在這一步,他設置了主鍵的生成方式,我使用了native,其它不用改變。最後點擊”finish”.

同理,添加guestbook表。(add by Michael)

再查看目錄結構,會顯示如下的目錄結構,如圖:

clip_image039

裏面針對兩個表生成了相應的.hbm.xml的映射文件和相應的兩個類。查看hibernate.cfg.xml,其源碼如下:

<?xml version='1.0' encoding='UTF-8'?>

<!DOCTYPE hibernate-configuration PUBLIC

"-//Hibernate/Hibernate Configuration DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<!-- Generated by MyEclipse Hibernate Tools. -->

<hibernate-configuration>

<session-factory>

<property name="connection.username">scott</property>

<property name="connection.url">

jdbc:oracle:thin:@localhost:1521:ora10g

</property>

<property name="dialect">

org.hibernate.dialect.Oracle9Dialect

</property>

<property name="myeclipse.connection.profile">

Linkoracle10g

</property>

<property name="connection.password">tiger</property>

<property name="connection.driver_class">

oracle.jdbc.driver.OracleDriver

</property>

<mapping resource="com/v512/guestbook/model/Admin.hbm.xml" />

<mapping resource="com/v512/guestbook/model/Guestbook.hbm.xml" />

</session-factory>

</hibernate-configuration>

執行上面的操作後,接着往下做。呵呵。

6.3 數據庫接口

6.3.1 GuestbookDao接口

我們爲項目新建一個包,包名稱爲:com.v512.guestbook.dao,它用來存放對底層數據庫進行的操作的一系列接口。接着在包中新建一個接口,名爲:GuestbookDao,如圖:

clip_image041

在接口中,我們定義了幾個方法,如下:

package com.v512.guestbook.dao;

import java.util.*;

import com.v512.guestbook.model.Guestbook;

//DAO指的是能對底層數據訓進行怎樣的操作,通常是增刪改查的操作

public interface GuestbookDao {

public void save(Guestbook g);

public void delete(Long id);

public List getGuestbooks();

public Guestbook getGuestbook(Long id);

}

6.3.2 GuestbookDao接口的實現類GuestbookDaoHibernate

緊接着我們創建一個包,包名爲:com.v512.guestbook.dao.hibernate,這個包存放的是實現了上面定義的dao接口的類,而這些類當中都是通過使用Hibernate 的技術來執行相應的操作的。

在該包中,我創建了一個類,類的名稱爲:GuestbookDaoHibernate,它要實現上面定義的GuestbookDao接口,並且繼承於HibernateDaoSupport.類的完整的源碼是:

package com.v512.guestbook.dao.hibernate;

//這個包存放的實現了dao接口的一些類,而這些類都是通過Hibernate的技術來執行相應的操作

import java.util.List;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.v512.guestbook.dao.GuestbookDao;

import com.v512.guestbook.model.Guestbook;

public class GuestbookDaoHibernate extends HibernateDaoSupport implements GuestbookDao {

public void delete(Long id) {

this.getHibernateTemplate().delete(getGuestbook(id));

}

public Guestbook getGuestbook(Long id) {

return (Guestbook)getHibernateTemplate().get(com.v512.guestbook.model.Guestbook.class, id);

}

public List getGuestbooks() {

return getHibernateTemplate().find("from Guestbook order by id desc");

}

public void save(Guestbook g) {

getHibernateTemplate().saveOrUpdate(g);

}

}

6.3.3 GuestbookManager接口

在上面操作完成後,我們開始編寫服務層的接口和相應的接口實現類(可以理解爲spring層)。

我們新建一個包,包的名稱爲com.v512.guestbook.service,接着我們在該包中定義了一個接口。完整的源如下:

package com.v512.guestbook.service;

import java.util.List;

import com.v512.guestbook.model.Guestbook;

public interface GuestbookManager {

public void save(Guestbook g);

public void delete(String id);

public Guestbook getGuestbook(String id);

public List getGuestbooks();

}

6.3.4 GuestbookManager接口的實現類GuestbookManagerImpl

到了這裏,我們新建一個包,包名稱爲:com.v512.guestbook.service.impl,在包中,我定義了上面GuestbookManager的實現類,完整的源碼如下:

package com.v512.guestbook.service.impl;

import java.util.List;

import com.v512.guestbook.dao.GuestbookDao;

import com.v512.guestbook.model.Guestbook;

import com.v512.guestbook.service.GuestbookManager;

public class GuestbookManagerImpl implements GuestbookManager {

private GuestbookDao dao;

public void setGuestbookDao(GuestbookDao dao) {

this.dao = dao;

}

public void delete(String id) {

dao.delete(new Long(id));

}

public Guestbook getGuestbook(String id) {

return dao.getGuestbook(new Long(id));

}

public List getGuestbooks() {

return dao.getGuestbooks();

}

public void save(Guestbook g) {

dao.save(g);

}

}

6.3.5 AdminDao接口

執行類似的操作,我們在com.v512.guestbook.dao中定義AdminDao的接口,代碼如下:

package com.v512.guestbook.dao;

public interface AdminDao {

public boolean validate(String username,String password);

}

6.3.6 AdminDao接口的實現類AdminDaoHibernate

再創建AdminDao的實現類,類名稱爲AdminDaoHibernate,把它放置在com.v512.guestbook.dao.hibernate包中,完整的源碼是:

package com.v512.guestbook.dao.hibernate;

import java.util.List;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.v512.guestbook.dao.AdminDao;

public class AdminDaoHibernate extends HibernateDaoSupport implements AdminDao {

public boolean validate(String username, String password) {

String param[]={username,password};

List list =getHibernateTemplate().find("from Admin where username=? and password=?",param);

return list.size()>0;

}

}

在上面操作完成後,我們開始編寫服務層的接口和相應的接口實現類(可以理解爲spring層)。

6.3.7 AdminManager接口

我們新建一個包,包的名稱爲com.v512.guestbook.service,接着我們在該包中定義了一個接口。完整的源如下:

package com.v512.guestbook.service;

public interface AdminManager{

public boolean validate(String username,String password);

}

6.3.8 AdminManager接口的實現類

到了這裏,我們新建一個包,包名稱爲:com.v512.guestbook.service.impl,在包中,我定義了上面AdminManager的實現類,完整的源碼如下:

package com.v512.guestbook.service.impl;

import com.v512.guestbook.dao.AdminDao;

import com.v512.guestbook.service.AdminManager;

public class AdminManagerImpl implements AdminManager {

private AdminDao dao;

public void setAdminDao(AdminDao dao){

this.dao=dao;

}

public boolean validate(String username, String password) {

return dao.validate(username, password);

}

}

6.4 在spring的配置文件配置數據源,捨棄hibernate.cfg.xml

緊接着,我們在執行完上面的操作後,我們去修改項目當中的配置文件。在applicationContext.xml中,我想把Hibernate 的配置信息也設置到applicationContext.xml 文件中去,這樣的話,hibernate.cfg.xml文件就不需要了.

首先,打開applicationContext.xml,右鍵,我在當中創建一個dataSource的bean,如圖:

clip_image043

接着會彈出這樣一個操作界面,如圖:

clip_image045

設置後,applicationContext.xml中便新增了名爲dataSourece的bean。如圖:

clip_image047

注意:這裏會提示錯誤,因爲project裏沒有commons-dbcp.jar把導致。到D:/MyEclipse 6.5/myeclipse/eclipse/plugins 的目錄下搜索, copy到project lib目錄下,再加到project的build path(add by Michael)

在增加了DataSource bean的設置後,再增加兩個bean的設置,右鍵,在“Spring”---"New Bean" ,我們添加了guestbookDao和guestbookManager 兩個bean,如圖,

clip_image049

在上圖中,要注意三點:

1)Bean id 指的是bean 的id;

2)Bean class :選擇

clip_image051的”Browse”按鈕,選擇GuestbookDaoHibernate.

3)最重要的就是:Properties

clip_image053

在上圖,表示guestbookDao要依賴注射一個sessionFactory的一個對象,添加玩後,如下圖

clip_image055

(guestbookManager, adminDao, adminManager的添加與上類同,不再贅述。同理他也依賴於guestbookManager 依賴於(ref) guestbookDao;

adminDao 依賴於(ref) sessionFactory;

adminManager 依賴於(ref) adminDao;)。(add by Michael)

現在呢,我們想不再使用Hibernat.cfg.xml文件 ,這裏,要修改一下這個applicationContext.xml文件。完整的applicationContext.xml代碼如下:

<?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-2.0.xsd">

<!-- 設定了一個id爲sessionFactory 類型的對象,它的類型是:org.springframework.orm.hibernate3.LocalSessionFactoryBean的,通過這個對象就能獲取hibernate 的session 對象,進行完成對數據的添加、刪除、修改的操作。也就是說這個對象是spring 幫我們提供的一個支持. -->

<bean id="sessionFactory"

class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

<!-- <property name="configLocation"

value="classpath:hibernate.cfg.xml">

</property>

-->

<property name="dataSource">

<ref bean="dataSource" />

</property>

<property name="mappingResources">

<list>

<value>com/v512/guestbook/model/Admin.hbm.xml</value>

<value>

com/v512/guestbook/model/Guestbook.hbm.xml

</value>

</list>

</property>

<property name="hibernateProperties">

<props>

<prop key="hibernate.dialect">

org.hibernate.dialect.Oracle9Dialect

</prop>

</props>

</property>

</bean>

<bean id="dataSource"

class="org.apache.commons.dbcp.BasicDataSource">

<property name="driverClassName"

value="oracle.jdbc.driver.OracleDriver">

</property>

<property name="url"

value="jdbc:oracle:thin:@localhost:1521:ora10g">

</property>

<property name="username" value="scott"></property>

<property name="password" value="tiger"></property>

</bean>

<!-- guestbookDao bean -->

<bean id="guestbookDao"

class="com.v512.guestbook.dao.hibernate.GuestbookDaoHibernate"

abstract="false" lazy-init="default" autowire="default"

dependency-check="default">

<property name="sessionFactory"><!-- 表示guestbookDao要依賴注射一個sessionFactory的一個對象 -->

<ref bean="sessionFactory" />

</property>

</bean>

<!-- guestbookManager bean -->

<bean id="guestbookManager"

class="com.v512.guestbook.service.impl.GuestbookManagerImpl"

abstract="false" lazy-init="default" autowire="default"

dependency-check="default">

<property name="guestbookDao"><!--表示guestbookManager需要一個DAO的支持,這裏我注射一個guestbookDao -->

<ref bean="guestbookDao" />

</property>

</bean>

<bean id="adminDao"

class="com.v512.guestbook.dao.hibernate.AdminDaoHibernate"

abstract="false" lazy-init="default" autowire="default"

dependency-check="default">

<property name="sessionFactory">

<ref bean="sessionFactory" />

</property>

</bean>

<bean id="adminManager"

class="com.v512.guestbook.service.impl.AdminManagerImpl"

abstract="false" lazy-init="default" autowire="default"

dependency-check="default">

<property name="adminDao">

<ref bean="adminDao" />

</property>

</bean>

</beans>

好了,我們現在應用的持久和服務層的實現類都編寫好了,就到了web的開發了。

現在做2件事:(add by Michael)

1. src下的hibernate.cfg.xml要刪除。

2. 把src的applicationContext.xml移到WebRoot/WEB-INF下,否則啓動服務器時會報錯找不到配置文件。

7 添加struts支持

爲項目添加struts1.3的支持。包名爲com.v512.guestbook.web,如圖:

clip_image057

這時,項目結構發生了改變,如下圖:

clip_image059

最後,我們修改配置文件,把struts和spring 結合起來。

修改配置文件web.xml文件,如下:

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="http://java.sun.com/xml/ns/javaee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

<!-- spring 提供了一個過濾器,我們直接拿來用 -->

<filter>

<filter-name>encodingFilter</filter-name>

<filter-class>

org.springframework.web.filter.CharacterEncodingFilter

</filter-class>

<!-- 指定使用UTF-8 -->

<init-param>

<param-name>encoding</param-name>

<param-value>UTF-8</param-value>

</init-param>

<init-param>

<param-name>forceEncoding</param-name>

<param-value>true</param-value>

</init-param>

</filter>

<!-- 指對所有進行過濾,要加過濾映射,告訴他哪些文件要過濾-->

<filter-mapping>

<filter-name>encodingFilter</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

<!-- 下面的代碼爲了在web中使用spring,還要加載spring 的配置文件,所以要指定application.xml文件的位置-->

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>/WEB-INF/applicationContext.xml</param-value> <!-- 在這裏,指定applicationContext.xml文件的路徑,因此呆會要把applicationContext.xml剪切至/WEB-INF目錄下 -->

</context-param>

<!-- 爲了讓web應用能加載spring,設置一個偵聽,通過這樣一個監聽器,一啓動WEB應用它自動根據上面設置好的配置文件的位置把配置文件加載到內存中,爲進一步使用spring中的bean做好準備 -->

<listener>

<listener-class>

org.springframework.web.context.ContextLoaderListener

</listener-class>

</listener>

<servlet>

<servlet-name>action</servlet-name>

<servlet-class>

org.apache.struts.action.ActionServlet

</servlet-class>

<init-param>

<param-name>config</param-name>

<param-value>/WEB-INF/struts-config.xml</param-value>

</init-param>

<init-param>

<param-name>debug</param-name>

<param-value>3</param-value>

</init-param>

<init-param>

<param-name>detail</param-name>

<param-value>3</param-value>

</init-param>

<load-on-startup>0</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>action</servlet-name>

<url-pattern>*.do</url-pattern>

</servlet-mapping>

<welcome-file-list>

<welcome-file>input.jsp</welcome-file>

</welcome-file-list>

</web-app>

緊接着,struts-config.xml中我們要創建相應的Form,action,jsp頁面,創建方式如圖:

clip_image061

在此之後,詳細的請參見所提供的源碼的struts-config.xml文件,通過這個方式,就創建了相應的action,form,在完成這些操作後,SSH的配置就完成了。

(注:讀者如果覺得看不懂的話,可以依照着源碼重新做一次,文檔寫的不是很詳細)

最後部署項目至tomcat容器下,就能夠通過這個地址訪問了:

http://localhost:8080/guestbook2/ .

原作者說到此結束,如果對於一個新手來說要把這個project運行起來可以還會有不少的困難。

8 運行project

8.1 copy相關文件到project

JSP文件:admin.jsp,display.jsp,edit.jsp,index.jsp,input.jsp,login.jsp,loginfail.jsp到WebRoot。

目錄:css,images到WebRoot。

配置文件: action-servlet.xml,spring.tld,spring-form.tld,validations.xml到WebRoot/WEB-INF。

8.2 配置tomcat的log4j

目的是跟蹤可能出現的異常,實踐證明log能夠快速的發現問題。另外很多新手的確也出現很多的問題,也包括我。

1. commons-logging-1.0.4.jar,log4j-1.2.11.jar copy到project的lib下。

2. 在Project的WebRoot下建目錄logs。

clip_image063

3. 在src下新建log4j.properties文件,內容如下

log4j.rootLogger=info,Console,R

log4j.appender.Console=org.apache.log4j.ConsoleAppender

log4j.appender.Console.layout=org.apache.log4j.PatternLayout

#log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p %c - %m%n

log4j.appender.Console.layout.ConversionPattern=%d{yy-MM-dd HH/:mm/:ss} %5p %c{1}/:%L - %m%n

log4j.appender.R=org.apache.log4j.DailyRollingFileAppender

log4j.appender.R.File=D://Tomcat5.5// logs//tomcat.txt

log4j.appender.R.layout=org.apache.log4j.PatternLayout

log4j.appender.R.layout.ConversionPattern=%d{yyyy.MM.dd HH/:mm/:ss} %5p %c{1}(%L)/:? %m%n

log4j.logger.org.apache=info, R

log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost]=DEBUG, R

log4j.logger.org.apache.catalina.core=info, R

log4j.logger.org.apache.catalina.session=info, R

log4j.appender.R.File要修改成你的log目錄。

8.3 配置tomcat

Windows->preference

clip_image065

8.4 Deploy project

點擊Deploy按鈕,如下圖

clip_image067

clip_image069

clip_image071

clip_image073

8.5 運行服務器tomcat

clip_image075

在你的IE裏輸入http://localhost:8080/guestbook2/

此時如果你認爲已經結束就太樂觀了,大問題在後頭呢。我第一次運行時被Error listenerStart搞的暈頭。

9 服務器異常處理

9.1 服務器啓動異常1

現象:

09-10-23 21:07:10 ERROR [/guestbook]:667 - action: null

java.lang.ClassNotFoundException: org.springframework.web.struts.ContextLoaderPlugIn

at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1352)

at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1198)

解決:

到D:/MyEclipse 6.5/myeclipse搜索spring-web.jar,加到project的lib下.重新部署Redeploy,再啓動。

又遇到了下面的異常。

9.2 服務器啓動異常2

現象:

2009.10.23 21:22:47 ERROR [/guestbook2](3678):? Error configuring application listener of class com.sun.faces.config.ConfigureListener

java.lang.NoClassDefFoundError: org/apache/commons/digester/RuleSet

at java.lang.Class.getDeclaredConstructors0(Native Method)

解決:

到D:/MyEclipse 6.5/myeclipse搜索commons-pool.jar,jsf-impl,加到project的lib下.重新部署Redeploy,再啓動。

至此,問題已經解決。

9.3 可能的其他異常供參考(從網上找的)

9.3.1 JSF--整合spring

使用JSF-Spring整合
一、下載
進官方網站http://jsf-spring.sourceforge.net,下載lib
二、參考quickstart配置相應文件
http://jsf-spring.sourceforge.net/quickstart.shtml
最終配置結果如下
web.xml

clip_image076<?xml version="1.0" encoding="UTF-8"?>
clip_image076[1]<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
clip_image076[2]    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4"
clip_image076[3]    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
clip_image076[4] <context-param>
clip_image076[5] <param-name>javax.faces.CONFIG_FILES</param-name>
clip_image076[6] <param-value>
clip_image076[7]            /WEB-INF/classes/faces/faces-config.xml, 
clip_image076[8]            /WEB-INF/classes/faces/faces-config-beans.xml
clip_image076[9] </param-value>
clip_image076[10] </context-param>
clip_image076[11] <context-param>
clip_image076[12] <param-name>contextConfigLocation</param-name>
clip_image076[13] <param-value>
clip_image076[14]            classpath*:spring/applicationContext-*.xml
clip_image076[15] </param-value>
clip_image076[16] </context-param>
clip_image076[17]
clip_image076[18] <servlet>
clip_image076[19] <servlet-name>Faces Servlet</servlet-name>
clip_image076[20] <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
clip_image076[21] <load-on-startup>0</load-on-startup>
clip_image076[22] </servlet>
clip_image076[23] <servlet-mapping>
clip_image076[24] <servlet-name>Faces Servlet</servlet-name>
clip_image076[25] <url-pattern>*.faces</url-pattern>
clip_image076[26] </servlet-mapping>
clip_image076[27] <listener>
clip_image076[28] <listener-class>
clip_image076[29]            org.springframework.web.context.request.RequestContextListener
clip_image076[30] </listener-class>
clip_image076[31] </listener>
clip_image076[32] <listener>
clip_image076[33] <listener-class>
clip_image076[34]            org.springframework.web.context.ContextLoaderListener
clip_image076[35] </listener-class>
clip_image076[36] </listener>
clip_image076[37] <listener>
clip_image076[38] <listener-class>de.mindmatters.faces.spring.context.ContextLoaderListener</listener-class>
clip_image076[39] </listener>
clip_image076[40]
clip_image076[41]</web-app>
clip_image076[42]
clip_image076[43]

請注意以上listener的順序,如果位置不同可能出現找不到在spring中定義的bean。請按以上順序配置即可。
根據quitstart配置完之後可能還有如下異常:
org.apache.jasper.JasperException: javax.servlet.ServletException: javax.servlet.jsp.JspException: javax.faces.el.EvaluationException: de.mindmatters.faces.spring.factory.BeansEvaluationException: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'uiBean': Scope 'request' is not active; nested exception is java.lang.IllegalStateException: No thread-bound request: use RequestContextFilter
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:532)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:408)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:322)
com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:147)
de.mindmatters.faces.lifecycle.RenderResponsePhase.executePhase(RenderResponsePhase.java:45)
de.mindmatters.faces.lifecycle.AbstractPhase.execute(AbstractPhase.java:37)
de.mindmatters.faces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:166)
de.mindmatters.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:226)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:198)
然後再把這個listener加上
<listener>
  <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
就ok了。
可選
如果還有問題,在faces-config.xml中添加
<application>
     <variable-resolver>
      org.springframework.web.jsf.DelegatingVariableResolver
     </variable-resolver>
  <view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
</application>

posted on 2007-04-26 16:18 風人園 閱讀(2936) 評論(3) 編輯 收藏 所屬分類: JSF

clip_image077

評論

# re: JSF--整合spring  回覆 更多評論

我按照你的配置修改後,後臺老提示
嚴重: Error configuring application listener of class com.sun.faces.config.ConfigureListener
java.lang.ClassNotFoundException: com.sun.faces.config.ConfigureListener
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1352)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1198)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3677)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4183)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:759)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:739)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:524)
at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:608)
at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:535)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:470)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1112)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:310)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1021)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:718)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1013)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:442)
at org.apache.catalina.core.StandardService.start(StandardService.java:450)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:709)
at org.apache.catalina.startup.Catalina.start(Catalina.java:551)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:275)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
請問什麼原因?我該如何解決? 急啊!
老大

2007-07-16 12:04 | zzb

# re: JSF--整合spring  回覆 更多評論

我的也是這個問題
嚴重: Error configuring application listener of class com.sun.faces.config.ConfigureListener
java.lang.ClassNotFoundException: com.sun.faces.config.ConfigureListener

2007-09-27 17:02 | wxyhibernate

# re: JSF--整合spring 回覆 更多評論

com.sun.faces.config.ConfigureListener在jsf的sun參考實現jsf-impl.jar中。
如果你使用的是apache的myfaces實現的話可以去掉這個listener。

2007-12-04 15:18 | KimmKing

9.3.2 嚴重: Exception sending context initialized event to listener instance

clip_image078已解決提問者:smallbqxy_062 - 二副 十一級

嚴重: Exception sending context initialized event to listener instance o

懸賞分:clip_image079100 解決時間:2008-12-25 12:29

用 myeclipse 做 spring+hibernate+struts2 時報錯,不知爲什麼,可能是spring包有問題 ,說是asm..之類的我都弄了也不行,如有知道請告訴一下。
嚴重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
java.lang.NoClassDefFoundError: org/springframework/context/support/AbstractRefreshableConfigApplicationContext
2008-12-6 16:08:39 org.apache.catalina.core.StandardContext start
嚴重: Context [/t8] startup failed due to previous errors

clip_image080最佳答案

clip_image0817481086_582 - 二副 十一級

你可能把不要的包也導進去了或是哪個必需的包沒導入,以下是必需包:
Spring包(9個): 
commons-dbcp.jar、commons-pool.jar、spring.jar、spring-beans.jar、
spring-context.jar、spring-core.jar、spring-dao.jar、
spring-hibernate3.jar、spring-web.jar。
struts2.0包(6個):commons-logging-api-1.1.jar、freemarker-2.3.8.jar 
ognl-2.6.11.jar、struts2-core-2.0.8.jar、
struts2-spring-plugin-2.0.11.2.jar、xwork-2.0.3.jar 
hibernate包:myeclipse工具自動添加生成導入。
還有就是數據庫驅動包。
如果還有什麼問題加:QQ 274339969

回答採納率達:27%(440個被採納)

評價已經被關閉 目前有 0 個人評論

好不好

0% (0)0% (0)

相關問題

其它回答 (2)

clip_image081[1]xuan6325293_706 - 二副 十一級

別的我不多說,我只告訴你些配置Spring的問題所報出的這種錯誤
你這問題如果是啓動Tomcat出的問題報錯解決方法很簡單如下:
需要加載的包(必須):commons-dbcp.jar和commons-pool.jar
需要刪除的包(必須):asm-2.2.3.jar 
如果按照此方法,必定解除你的錯誤 如果這加載包沒有 我給你!

回答採納率達:30%(472個被採納)

clip_image081[2]89B2A3604_868 - 二副 十一級

java.lang.NoClassDefFoundError: 
你在配置文件裏定義的某個類,沒有找到,估計是包名沒有寫對,把報錯信息再仔細地看一看

回答採納率達:29%(453個被採納)

9.3.3 嚴重: Error listenerStart

最近關於SPRING的配置的問題一啓動TOMCAT就出現"嚴重: Error listenerStart",通過BAIDU和GOOLGE查找了差不多兩天,沒有找一個有建設性的意見.都是一些轉載,我真的想問問他們有沒有真真的去面對過,和測試過,就在這裏亂說!出現這種錯誤的主要原因是由於WEB.XML配置SPRING的時候出錯的:
org.springframework.web.context.ContextLoaderListener

現在我認爲有必要說說我解決的方面了:要考慮的方面有:

1、web.xml的配置有沒有問題!

2、一些必要的JAR文件,有沒有多餘JAR文件,是不是版本問題

3、是不是JDK和TOMCAT的版本問題

4、最重要的是在這裏了:SPRING配置文件是不是有配置BEAN有錯誤!

補充:還一個更絕的方法:通過TOMCAT的LOG來解決這個問題,更方便,更簡單.不過要配置TOMCAT的LOG

首先在TOMCAT目錄下找到common下的lib,在這個目錄下加入兩個JAR文件,分別是commons-logging-1.0.4.jar和log4j-1.2.9.jar,同時還需要在common下的classes目錄下加入log4j.properties文件,

我的log4j.properties文件配置如下:

log4j.rootLogger=info, A1 , R
log4j.appender.A1=org.apache.log4j.ConsoleAppender
#log4j.appender.A1.layout=org.apache.log4j.HTMLLayout
#log4j.appender.A1.layout=org.apache.log4j.SimpleLayout
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=${myappfuse.root}/WEB-INF/classes/log/log4j.log
log4j.appender.R.MaxFileSize=200KB
log4j.appender.R.MaxBackupIndex=100
log4j.appender.R.layout=org.apache.log4j.PatternLayout
#log4j.appender.R.layout=org.apache.log4j.DailyRollingFileAppender
#log4j.appender.R.layout.ConversionPattern=%p -thread: %t - %l - %c - %m%n
log4j.appender.R.layout.ConversionPattern=%p -%-d{yyyy-MM-dd HH:mm:ss} %l - %m%n
### set log levels - for more verbose logging change 'info' to 'debug' ###
#log4j.logger.org.hibernate=info
#log4j.logger.org.hibernate=debug

### log HQL query parser activity
#log4j.logger.org.hibernate.hql.ast.AST=debug

### log just the SQL#
log4j.logger.org.hibernate.SQL=INFO
#log4j.logger.java.sql.PreparedStatement=DEBUG

### log JDBC bind parameters ###
#log4j.logger.org.hibernate.type=info
#log4j.logger.org.hibernate.type=debug

### log schema export/update ###
#log4j.logger.org.hibernate.tool.hbm2ddl=debug

### log HQL parse trees
#log4j.logger.org.hibernate.hql=info

### log cache activity ###
#log4j.logger.org.hibernate.cache=debug

### log transaction activity
#log4j.logger.org.hibernate.transaction=debug

### log JDBC resource acquisition
#log4j.logger.org.hibernate.jdbc=debug

### enable the following line if you want to track down connection ###
### leakages when using DriverManagerConnectionProvider ###
#log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider=trace

9.3.4 使用spring中,出現深惡痛絕的Error listenerStart!!

使用spring,出現深惡痛絕的Error listenerStart!!

樓主syhgxyhzb(劍雨飛花)2006-09-30 22:10:24 在 Java / 框架、開源 提問

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>classpath:applicationContext.xml</param-value>  
  </context-param>                
  <listener>  
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
  </listener>  
  </web-app>  
  applicationContext.xml在src下:
  <?xml   version="1.0"   encoding="UTF-8"?>  
  <!DOCTYPE   beans   PUBLIC   "-//SPRING//DTD   BEAN//EN"   "http://www.springframework.org/dtd/spring-beans.dtd">  
  <beans>  
  <bean   id="dataSource"  
  class="org.apache.commons.dbcp.BasicDataSource">  
  <property   name="driverClassName"   value="com.mysql.jdbc.Driver"   />  
  <property   name="url"   value="jdbc:mysql://localhost:3306/study"   />  
  <property   name="username"   value="root"   />  
  <property   name="password"   value="admin"   />  
  </bean>  
  <bean   id="sessionFactory"  
  class="org.springframework.orm.hibernate.LocalSessionFactoryBean">  
  <property   name="dataSource"   ref="dataSource"></property>  
  <property   name="mappingResources">  
  <list>  
  <value>/org/study/domain/hbm/Test1.hbm.xml</value>  
  <value>/org/study/domain/hbm/Test2.hbm.xml</value>  
  </list>  
  </property>  
  </bean>  
  </beans>  
這樣的話,啓動tomcat便出現熟悉的:
  2006-9-30   21:50:30   org.apache.catalina.core.StandardContext   start  
嚴重:   Error   listenerStart  
  2006-9-30   21:50:30   org.apache.catalina.core.StandardContext   start  
嚴重:   Context   [/yumen]   startup   failed   due   to   previous   errors  
如果將applicationContext當中的:
  <property   name="mappingResources">  
  <list>  
  <value>/org/study/domain/hbm/Test1.hbm.xml</value>  
  <value>/org/study/domain/hbm/Test2.hbm.xml</value>  
  </list>  
  </property>  
去掉就沒有問題了,但是我確信目錄沒有錯。
請問這是怎麼回事??
問題點數:100、回覆次數:10Top

1 kinsey0514(春天的老黃牛)回覆於 2006-09-30 22:59:37 得分 0

upTop

2 timtin0361(究極奧義)回覆於 2006-10-01 11:32:11 得分 0

/org/study/domain/hbm/Test1.hbm.xml  
第一個/   要嗎Top

3 syhgxyhzb(劍雨飛花)回覆於 2006-10-01 12:25:06 得分 0

無論要不要,都照樣出錯。Top

4 jrwx()回覆於 2006-10-01 19:00:49 得分 0

可能Test2.hbm.xml,Test1.hbm.xml的格式不對,讀不出裏面的內容 你轉一下本地編碼格式試試Top

5 syhgxyhzb(劍雨飛花)回覆於 2006-10-01 19:27:18 得分 0

什麼叫本地編碼格式呢?Top

6 zqpsswh(似水無痕)回覆於 2006-10-03 17:27:35 得分 0

明顯格式不對 仔細檢查吧
是否DTD錯誤?Top

7 syhgxyhzb(劍雨飛花)回覆於 2006-10-04 08:38:51 得分 0

什麼叫明顯格式不對呢?  
好多書上,網上都是這樣寫的,那這麼明顯,您看出來了?Top

8 Saro(這也不是江水,這是二十年流不盡的英雄血。)回覆於 2006-10-04 11:46:20 得分 100

運行一下
  new   ClassPathXmlApplicationContext("applicationContext.xml").getBean("sessionFactory");  
看看報什麼異常。Top

9 syhgxyhzb(劍雨飛花)回覆於 2006-10-04 21:13:17 得分 0

按照Saro的方法找到了錯誤,原來是hibernate2和hibernate3的版本問題.解決了.  
Top

10 syhgxyhzb(劍雨飛花)回覆於 2006-10-04 21:15:37 得分 0

貼子回覆次數大於跟給分次數   ,是什麼意思,不能給分

9.3.5 開發異常的解決方法

2009年04月09日 00時00分

1、java.lang.NoSuchMethodError: sun.rmi.transport.ObjectTable.getStub(Ljava/rmi/Remote;)Ljava/rmi/server/RemoteStub

問題描述:當集成JOTM 2.0.13到Tomcat 5.5.27時出現。

解決方法:修改carol.properties文件中的carol.jvm.rmi.local.call屬性爲true。

2、java.lang.NoSuchMethodError: org.springframework.util.Assert.noNullElements([Ljava/lang/Object;Ljava/lang/String;)V

解決方法:不能將Spring 2.0和Spring 2.5中的spring.jar與spring-[modules].jar混合使用。

9.3.6 Tomcat嚴重錯誤,日誌裏出現: java.lang.NoClassDefFoundError: javax/el/ExpressionFactory

發佈工程時,拋出以下異常:
java.lang.NoClassDefFoundError: javax/el/ExpressionFactory
Apache Tomcat/5.0.28
則將javaee.jar包再copy一份放在tomcat目錄的common/lib下就不會了。
關於用到的javaee.jar、jsf-api.jar、jsf-impl.jar、jstl-1.2.jar這四個包可以通過myeclipse中獲得,這四個包的所在的目錄是:
D:/Program Files/MyEclipse 6.5/myeclipse/eclipse/plugins/com.genuitec.eclipse.j2eedt.core_6.5.0.zmyeclipse650200806/data/libraryset/EE_5

posted on 2008-08-29 19:39 Documents 閱讀(1370) 評論(0) 編輯 收藏 所屬分類: Tomcat

clip_image077[1]

IT新聞 新用戶註冊 刷新評論列表

9.3.7 tomcat啓動時出現的 嚴重: Error listenerStart

最近看《WebWork.Spring.Hibernate整合開發網絡書城》視頻教程,自己按照教程上說的做練習,在啓動tomcat時總是出一個錯誤:<o:p></o:p>

  2007-5-31 14:27:13 org.apache.catalina.core.StandardContext start
嚴重: Error listenerStart
      2007-5-31 14:27:13 org.apache.catalina.core.StandardContext start
嚴重: Context [/testWSH] startup failed due to previous errors
教程的作者在錄製教程時也遇到了此問題,但是他刪了一個jar包後就沒事了,可是我的一直無法正常啓動,從昨天到現在一天的時間都在研究這個問題,也“百 度”到了很多有關此問題的信息,但是都沒有很明確的解決方案。現在此問題已經解決,而且基本肯定問題所在,所以將解決方案寫出來以供參考。
有一種解決方案是把web.xml文件中的<o:p></o:p>

<listener>       <listener-class>org.springframework.web.context.ContextLoaderListenerlistener-class>
listener>
改爲
   <servlet>
        <servlet-name>SpringContextServletservlet-name>
        <servlet-class>
            org.springframework.web.context.ContextLoaderServlet
        servlet-class>
        <load-on-startup>1load-on-startup>
    servlet><o:p></o:p>

但這種方法可能會出現其他問題(網上又說會導致其他文件無法打開)。
    <o:p></o:p>

我的最終解決方案如下:
我用的是tomcat5.5,配置了日誌之後打印出下列信息:
   ERROR main org.springframework.web.context.ContextLoader - Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: org/apache/commons/pool/impl/GenericObjectPool
Caused by:
java.lang.NoClassDefFoundError: org/apache/commons/pool/impl/GenericObjectPool
    at java.lang.Class.getDeclaredConstructors0(Native Method)
  at java.lang.Class.privateGetDeclaredConstructors(Class.java:2328)
    at java.lang.Class.getConstructor0(Class.java:2640)
    at java.lang.Class.getDeclaredConstructor(Class.java:1953)
    ……
從日誌信息看問題已經很明顯了,是 applicationContext.xml dataSource 問題。

<bean class="org.apache.commons.dbcp.BasicDataSource" id="dataSource"></bean><bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<bean class="org.apache.commons.dbcp.BasicDataSource" id="dataSource"></bean>改爲
<bean class="org.springframework.jdbc.datasource.DriverManagerDataSource" id="dataSource"></bean><bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
之後問題得到解決。 <o:p></o:p>

出現"Error listenerStart"一般是applicationContext.xml中的bean加載有問題。在用eclipse做webwork + spring + hibernate 的項目時一般都是用Myeclipse自動生成那些配置文件,而有些相關的jar或者文件並沒有加載在至項目中,以至引出奇怪的問題,又因爲是自動生成的東西所以往往會忽略一些文件,而問題確恰恰是這些生成的文件所致,所以自動化的東西也未必一定是正確的,呵呵……<o:p></o:p>

    org.springframework.jdbc.datasource.DriverManagerDataSource 不可以使用連接池。org.apache.commons.dbcp.BasicDataSource作爲注入的DataSource源,爲了使用 DBCP的功能,必須要將commons-dbcp.jar加入CLASSPATH中,另外還需要commons-pool.jar和commons- collections.jar,這些都可以在Spring的lib目錄下找到。
org.springframework.jdbc.datasource.DriverManagerDataSource並沒有提供連接池的功能,只能作作簡單的單機連接測試。
使用org.apache.commons.dbcp.BasicDataSource時缺少commons-pool.jar所以會出現如題的問題。 <o:p></o:p>

再次修正:<o:p></o:p>

昨天又遇到此問題,解決的辦法是刪除無用的jar。<o:p></o:p>

工程是 spring+hibernate+tomcat<st1:chsdate year="1899" month="12" day="30" islunardate="False" isrocdate="False" w:st="on">5.5.25</st1:chsdate>,jar都是用eclipse自動加載的,很多jar明顯的用不到,例如:ibatis,toplink等。將無用的jar刪除後問題解決。<o:p></o:p>

<o:p> </o:p>

評論

12 樓 shudikoo 2008-05-21   引用

我也遇到了這個問題,研究了3天,最後知道是少了幾個spring的包。去官網下載spring的最新包。就ok了。具體的文件配置在http://user.qzone.qq.com/3470537/blog/1211351181

11 樓 擺渡人 2008-04-07   引用

怪事,偶也是報這個錯誤,發現沒加入spring.jar包,加了之後.tomcat6啓動就OK了

10 樓 richardlovejob 2007-10-26   引用

謝謝你的提示幫助!

9 樓 danielchen19 2007-09-01   引用

我也曾經試過這樣可以過一次,但現在又出現這種情況,原因是在web.xml 刪了<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>就可以了, 正常情況是可以的,不知是什麼原因,請高手解答一下。

8 樓 xj4150 2007-08-23   引用

danielchen19 寫道

我也是將它變成這樣<!--<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
-->
<servlet>
        <servlet-name>SpringContextServlet</servlet-name>
        <servlet-class>    </servlet-class>
          <load-on-startup>1</load-on-startup>
    </servlet>
但是還是出現嚴重: Error listenerStart
2007-8-12 8:37:30 org.apache.catalina.core.StandardContext start
嚴重: Context [/ConnectNote] startup failed due to previous errors, 請問是什麼原因??

ybbtgvusr 寫道

我也遇到了樓主說的情況,按你說的解決方法試過了。但沒有用呀,還是出現Error listenerStart錯誤!!

先看看日誌吧,看看報什麼異常

7 樓 danielchen19 2007-08-12   引用

我也是將它變成這樣<!--<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
-->
<servlet>
        <servlet-name>SpringContextServlet</servlet-name>
        <servlet-class>    </servlet-class>
          <load-on-startup>1</load-on-startup>
    </servlet>
但是還是出現嚴重: Error listenerStart
2007-8-12 8:37:30 org.apache.catalina.core.StandardContext start
嚴重: Context [/ConnectNote] startup failed due to previous errors, 請問是什麼原因??

6 樓 ybbtgvusr 2007-07-05   引用

我也遇到了樓主說的情況,按你說的解決方法試過了。但沒有用呀,還是出現Error listenerStart錯誤!!

5 樓 hcconquer 2007-06-15   引用

樓上說的很對,commons-dbcp.jar、commons-pool.jar和commons- collections.jar都加到lib就好了
我現在報sessionFactory不能創建,請問要加那幾個包啊

4 樓 aimama_1314 2007-06-04   引用

在這裏搜到你的帖`~  XJ~~
我又遇見這樣的問題了``
估計是剛纔applicationContext.XML 加bean的時候加錯了``555
淚``繼續改錯``

3 樓 xj4150 2007-06-01   引用

使用org.apache.commons.dbcp.BasicDataSource時缺少commons-pool.jar所以會出現如題的問題。

2 樓 xj4150 2007-05-31   引用

org.springframework.jdbc.datasource.DriverManagerDataSource並沒有提供連接池的功能,只能作作簡單的單機連接測試。

1 樓 xj4150 2007-05-31   引用

<bean id="dataSource"class="org.springframework.jdbc.datasource.DriverManagerDataSource">不可以使用連接池。org.apache.commons.dbcp.BasicDataSource作爲注入的DataSource源,爲了使用DBCP的功能,必須要將commons-dbcp.jar加入CLASSPATH中,另外還需要commons-pool.jar和commons- collections.jar,這些都可以在Spring的lib目錄下找到。

9.3.8 在部署Struts時,出現如下404錯誤信息

struts常見問題1:HTTP Status 404 - Servlet action is not available 收藏

在部署Struts時,出現如下錯誤信息:

HTTP Status 404 - Servlet action is not available

--------------------------------------------------------------------------------

type Status report

message Servlet action is not available

description The requested resource (Servlet action is not available) is not available.

問題原因:

1.、web.xml文件中未配置ActionServlet。

2、struts-config.xml文件未配置你要訪問的Action。

3、你的jsp文件form標記中action屬性的路徑名稱錯誤。

4、非以上三種情況。

針對以上4種情況相應的解決方案如下:

1、在web.xml文件中加上ActionServlet的配置信息

clip_image083

2、在struts-config.xml文件檢查你要訪問的Action配置文件。

3、檢查jsp文件form標記中action屬性的路徑名稱是否與struts-config.xml文件中action標記的path屬性的路徑名稱一致。

4、非以上情況的解決辦法就是檢查web容器的log日誌,如果時tomcat則檢查下logs目錄下的localhost_log文件,看裏邊是否記錄有錯誤信息,然後根據錯誤信息提示將其糾正。

發表於 @ 2008年06月27日 10:53:00 | 評論( 0 ) | 編輯| 舉報| 收藏

舊一篇:java遇到的錯誤 | 新一篇:Acegi學習一

本文來自CSDN博客,轉載請標明出處:file:///D:/DOC/SSH/struts常見問題1:HTTP%20Status%20404%20-%20Servlet%20action%20is%20not%20available%20-%20xu_zh_h的專欄%20-%20CSDN博客.htm

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章