[Java][j2ee]log4j初试

7 篇文章 0 订阅
注:省略了很多其他东西,按部就班照搬问题多多。仅做自己备忘及给需要的朋友参考


使用log4j在web项目中进行日志记录。
1.添加 一个用于log4j初始化(指定属性文件等)的servlet
package  addrbook.servlet;

import  javax.servlet.http.HttpServlet;
import  javax.servlet.http.HttpServletRequest;
import  javax.servlet.http.HttpServletResponse;
import  org.apache.log4j. * ;

public   class  Log4jInitServlet  extends  HttpServlet  {
    
public void init() {
        String prefix 
= getServletContext().getRealPath("/");
        String file 
= getInitParameter("log4j-init-file");
        
if (file != null{
            PropertyConfigurator.configure(prefix 
+ file);
        }

    }


    
public void doGet(HttpServletRequest req, HttpServletResponse res) {
    }


}


2.配置web.xml,让project启动就让log4j初始化(project启动即运行上面的servlet)
   < servlet >
    
< servlet-name > Log4jInitServlet </ servlet-name >
    
< servlet-class > addrbook.servlet.Log4jInitServlet </ servlet-class >
    
< init-param >
        
< param-name > log4j-init-file </ param-name >
        
< param-value > /WEB-INF/classes/log4j.properties </ param-value >
    
</ init-param >
    
< load-on-startup > 1 </ load-on-startup >
  
</ servlet >

3.编写log4j.properties,(演示在一个配置文件中控制多个logger的输出)
#log4j.rootLogger = fatal
log4j.logger.DB 
= debug , R
log4j.logger.LOGON 
=  debug , R2

log4j.appender.R
= org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.layout
= org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern
= %d{yyyy-MM-dd HH:mm:ss} %c %p%n    %m%n 
log4j.appender.R.File
= ../webapps/addressbook1/WEB-INF/log/event.log


log4j.appender.R2
= org.apache.log4j.DailyRollingFileAppender
log4j.appender.R2.layout
= org.apache.log4j.PatternLayout
log4j.appender.R2.layout.ConversionPattern
= %d{yyyy-MM-dd HH:mm:ss} %c %p%n    %m%n 
log4j.appender.R2.File
= ../webapps/addressbook1/WEB-INF/log/event.log

一个是用于控制数据库操作日志的DB(R),一个是用于登陆信息日志的LOGON(R2),在一个properties一起配置。指定了日志输出的路径“ log4j.appender.R.File = ../webapps/addressbook1/WEB-INF/log/event.log”。
如果直接为 log4j.appender.R.File =event.log, 则日志文件将位域tomcat/bin/eveng.log

4.在代码中添加日志操作代码
package  addrbook.model;

import  java.sql. * ;
import  org.apache.log4j. * ;

public   class  DBUtil  {
    
private final static String DRIVER_NAME = "com.mysql.jdbc.Driver";
    
private final static String DBURL = "jdbc:mysql://";
    
private final static String DBNAME = "struts_addr";
    
private final static String DB_USER_NAME = "feng";
    
private final static String DB_USER_PWD = "";
    
    
public static Logger logger = Logger.getLogger("DB"); //获取一个Logger,名字与properties文件里的对应

    
public DBUtil() {

    }


    
public static java.sql.Connection connectToDb(String hostName,
            String databaseName) 
throws Exception {
        Connection connection 
= null;
        String connName 
= DBURL + hostName + ":3306" + "/" + databaseName;
        logger.debug(
"connName: "+connName);    //日志输出
        Class.forName(DRIVER_NAME).newInstance();
        connection 
= DriverManager.getConnection(connName, DB_USER_NAME,
                DB_USER_PWD);
        
return connection;
    }


    
public static Connection connectToDb(String databaseName) throws Exception {
        
return (connectToDb("localhost", databaseName));
    }


    
public static Connection connectToDb() throws Exception {
        
return (connectToDb("localhost", DBNAME));
    }

}



package  addrbook.action;

import  java.util.Locale;
import  javax.servlet.http. * ;
import  org.apache.struts.action. * ;
import  org.apache.struts.util.MessageResources;
import  addrbook.form.InsertForm;
import  addrbook.model.AddressBookBean;
import  addrbook.model.DBUtil;
import  addrbook.Constants;

/**
 * <strong>InsertAction</strong> inserts a new record into the database.
 
*/

public   final   class  InsertAction  extends  AbstActionBase  {

    
public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            
throws Exception {

        Locale locale 
= getLocale(request);
        MessageResources messages 
= getResources(request);

        String name 
= null;
        String phone 
= null;
        String address 
= null;

        ActionMessages errors 
= new ActionMessages();

        name 
= ((InsertForm) form).getName();
        phone 
= ((InsertForm) form).getPhone();
        address 
= ((InsertForm) form).getAddress();

        
try {
            AddressBookBean bean 
= new AddressBookBean(name, phone, address);
            bean.insert();
        }
 catch (Exception ex) {
            
//ex.printStackTrace(System.out);
            DBUtil.logger.debug("exception!!", ex); //记录数据库操作异常日志
            
            errors.add(ActionMessages.GLOBAL_MESSAGE, 
new ActionMessage(
                    
"error.insert.failed"));
        }


        
if (!errors.isEmpty()) {
            saveErrors(request, errors);
            
return (new ActionForward(mapping.getInput()));
        }

        
// If we had no errors, then add a confirmation message
        ActionMessages actionMessages = new ActionMessages();
        actionMessages.add(ActionMessages.GLOBAL_MESSAGE, 
new ActionMessage(
                
"record.inserted"));
        saveMessages(request, actionMessages);

        
return (mapping.findForward(Constants.FORWARD_CONFIRMATION));

    }

}


package  addrbook;

import  addrbook.model. * ;
import  java.util. * ;
import  java.io. * ;
import  javax.servlet.ServletException;
import  javax.servlet.http. * ;
import  javax.servlet. * ;

import  org.apache.commons.digester.Digester;
import  org.apache.log4j. * ;


public   final   class  UserDatabaseServlet  extends  HttpServlet  {
    
    
private Hashtable<String, UserBean> database = null;
    
//private int debug = 0;
    private String pathname = "/WEB-INF/userdatabase.xml";
    
    
private static Logger logger = Logger.getLogger("LOGON");//获取logger,名字与properties文件对应
    
    
public void destroy(){
        getServletContext().removeAttribute(Constants.DATABASE_KEY);
    }

    
    
/*public int getDebug(){
        return this.debug;
    }
*/

    
    
public void addUser(UserBean user){
        database.put(user.getUserName(), user);
    }

    
    
public void init() throws ServletException{
        
        String value 
= getServletConfig().getInitParameter("pathname");
        
if(value != null)
            pathname 
= value;
        
        
try{
            load();
            getServletContext().setAttribute(Constants.DATABASE_KEY, database);
        }
catch(Exception e){
            
//log("Database load exception",e);
            logger.debug("Database load exception", e);
            
throw new UnavailableException("Cannot load database from '"+pathname+""+e.getMessage());
        }

    }

    
    
    
private synchronized void load() throws Exception{
        database 
= new Hashtable<String, UserBean>();
        
        
//记录loon信息
        logger.info("Loading database from '"+pathname+"'");
        InputStream is 
= getServletContext().getResourceAsStream(pathname);
        
if(is == null){
            
            
//记录logon信息
            logger.info("No such resource available - loading empty database");
            
return;
        }

        
        BufferedInputStream bis 
= new BufferedInputStream(is);
        Digester digester 
= new Digester();
        digester.push(
this);
        
//digester.setDebug(1);
        digester.setValidating(false);
        digester.addObjectCreate(
"database/user""addrbook.model.UserBean");
        digester.addSetProperties(
"database/user");
        digester.addSetNext(
"database/user","addUser");
        digester.parse(bis);        
        bis.close();
    }

}


一个日志输出event.log
08 - 04 - 13   17 : 19 : 17  LOGON INFO
    Loading database from '/WEB-INF/userdatabase.xml'
 
2008 - 04 - 13   17 : 19 : 30  DB DEBUG
    connName: jdbc:mysql://localhost:
3306 /struts_addr
 
2008 - 04 - 13   17 : 19 : 31  DB DEBUG
    exception!!
 com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception: 

** BEGIN NESTED EXCEPTION ** 

java.net.ConnectException
MESSAGE: Connection refused: connect

STACKTRACE:

java.net.ConnectException: Connection refused: connect
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:
333 )
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:
195 )
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:
182 )
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:
366 )
    at java.net.Socket.connect(Socket.java:
519 )
    at java.net.Socket.connect(Socket.java:
469 )
    at java.net.Socket.<init>(Socket.java:
366 )
    at java.net.Socket.<init>(Socket.java:
209 )
    at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:
256 )
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:
271 )
    at com.mysql.jdbc.Connection.createNewIO(Connection.java:
2744 )
    at com.mysql.jdbc.Connection.<init>(Connection.java:
1553 )
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:
285 )
    at java.sql.DriverManager.getConnection(DriverManager.java:
582 )
    at java.sql.DriverManager.getConnection(DriverManager.java:
185 )
    at addrbook.model.DBUtil.connectToDb(DBUtil.java:
26 )
    at addrbook.model.DBUtil.connectToDb(DBUtil.java:
36 )
    at addrbook.model.AddressBookBean.insert(AddressBookBean.java:
57 )
    at addrbook.action.InsertAction.execute(InsertAction.java:
55 )
    at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:
431 )
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:
236 )
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:
1196 )
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:
432 )
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:
710 )
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:
803 )
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
290 )
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:
206 )
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:
233 )
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:
175 )
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:
128 )
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:
102 )
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:
109 )
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:
263 )
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:
844 )
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:
584 )
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:
447 )
    at java.lang.Thread.run(Thread.java:
619 )


** END NESTED EXCEPTION **



Last packet sent to the server was 
0  ms ago.
    at com.mysql.jdbc.Connection.createNewIO(Connection.java:
2820 )
    at com.mysql.jdbc.Connection.<init>(Connection.java:
1553 )
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:
285 )
    at java.sql.DriverManager.getConnection(DriverManager.java:
582 )
    at java.sql.DriverManager.getConnection(DriverManager.java:
185 )
    at addrbook.model.DBUtil.connectToDb(DBUtil.java:
26 )
    at addrbook.model.DBUtil.connectToDb(DBUtil.java:
36 )
    at addrbook.model.AddressBookBean.insert(AddressBookBean.java:
57 )
    at addrbook.action.InsertAction.execute(InsertAction.java:
55 )
    at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:
431 )
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:
236 )
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:
1196 )
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:
432 )
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:
710 )
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:
803 )
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
290 )
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:
206 )
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:
233 )
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:
175 )
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:
128 )
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:
102 )
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:
109 )
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:
263 )
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:
844 )
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:
584 )
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:
447 )
    at java.lang.Thread.run(Thread.java:
619 )
2008 - 04 - 13   17 : 37 : 48  DB DEBUG
    connName: jdbc:mysql://localhost:
3306 /struts_addr
 
2008 - 04 - 13   17 : 37 : 49  DB DEBUG
    exception!!
 com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception: 

** BEGIN NESTED EXCEPTION ** 

java.net.ConnectException
MESSAGE: Connection refused: connect

STACKTRACE:

java.net.ConnectException: Connection refused: connect
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:
333 )
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:
195 )
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:
182 )
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:
366 )
    at java.net.Socket.connect(Socket.java:
519 )
    at java.net.Socket.connect(Socket.java:
469 )
    at java.net.Socket.<init>(Socket.java:
366 )
    at java.net.Socket.<init>(Socket.java:
209 )
    at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:
256 )
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:
271 )
    at com.mysql.jdbc.Connection.createNewIO(Connection.java:
2744 )
    at com.mysql.jdbc.Connection.<init>(Connection.java:
1553 )
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:
285 )
    at java.sql.DriverManager.getConnection(DriverManager.java:
582 )
    at java.sql.DriverManager.getConnection(DriverManager.java:
185 )
    at addrbook.model.DBUtil.connectToDb(DBUtil.java:
26 )
    at addrbook.model.DBUtil.connectToDb(DBUtil.java:
36 )
    at addrbook.model.AddressBookBean.insert(AddressBookBean.java:
57 )
    at addrbook.action.InsertAction.execute(InsertAction.java:
55 )
    at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:
431 )
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:
236 )
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:
1196 )
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:
432 )
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:
710 )
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:
803 )
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
290 )
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:
206 )
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:
233 )
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:
175 )
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:
128 )
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:
102 )
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:
109 )
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:
263 )
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:
844 )
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:
584 )
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:
447 )
    at java.lang.Thread.run(Thread.java:
619 )


** END NESTED EXCEPTION **



Last packet sent to the server was 
0  ms ago.
    at com.mysql.jdbc.Connection.createNewIO(Connection.java:
2820 )
    at com.mysql.jdbc.Connection.<init>(Connection.java:
1553 )
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:
285 )
    at java.sql.DriverManager.getConnection(DriverManager.java:
582 )
    at java.sql.DriverManager.getConnection(DriverManager.java:
185 )
    at addrbook.model.DBUtil.connectToDb(DBUtil.java:
26 )
    at addrbook.model.DBUtil.connectToDb(DBUtil.java:
36 )
    at addrbook.model.AddressBookBean.insert(AddressBookBean.java:
57 )
    at addrbook.action.InsertAction.execute(InsertAction.java:
55 )
    at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:
431 )
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:
236 )
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:
1196 )
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:
432 )
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:
710 )
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:
803 )
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
290 )
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:
206 )
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:
233 )
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:
175 )
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:
128 )
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:
102 )
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:
109 )
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:
263 )
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:
844 )
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:
584 )
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:
447 )
    at java.lang.Thread.run(Thread.java:
619 )
2008 - 04 - 13   17 : 38 : 20  LOGON INFO
    Loading database from '/WEB-INF/userdatabase.xml'
 
2008 - 04 - 13   17 : 38 : 25  DB DEBUG
    connName: jdbc:mysql://localhost:
3306 /struts_addr
 
2008 - 04 - 13   17 : 38 : 26  DB DEBUG
    exception!!
 com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception: 

** BEGIN NESTED EXCEPTION ** 

java.net.ConnectException
MESSAGE: Connection refused: connect

STACKTRACE:

java.net.ConnectException: Connection refused: connect
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:
333 )
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:
195 )
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:
182 )
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:
366 )
    at java.net.Socket.connect(Socket.java:
519 )
    at java.net.Socket.connect(Socket.java:
469 )
    at java.net.Socket.<init>(Socket.java:
366 )
    at java.net.Socket.<init>(Socket.java:
209 )
    at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:
256 )
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:
271 )
    at com.mysql.jdbc.Connection.createNewIO(Connection.java:
2744 )
    at com.mysql.jdbc.Connection.<init>(Connection.java:
1553 )
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:
285 )
    at java.sql.DriverManager.getConnection(DriverManager.java:
582 )
    at java.sql.DriverManager.getConnection(DriverManager.java:
185 )
    at addrbook.model.DBUtil.connectToDb(DBUtil.java:
26 )
    at addrbook.model.DBUtil.connectToDb(DBUtil.java:
36 )
    at addrbook.model.AddressBookBean.insert(AddressBookBean.java:
57 )
    at addrbook.action.InsertAction.execute(InsertAction.java:
55 )
    at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:
431 )
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:
236 )
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:
1196 )
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:
432 )
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:
710 )
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:
803 )
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
290 )
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:
206 )
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:
233 )
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:
175 )
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:
128 )
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:
102 )
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:
109 )
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:
263 )
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:
844 )
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:
584 )
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:
447 )
    at java.lang.Thread.run(Thread.java:
619 )


** END NESTED EXCEPTION **



Last packet sent to the server was 
0  ms ago.
    at com.mysql.jdbc.Connection.createNewIO(Connection.java:
2820 )
    at com.mysql.jdbc.Connection.<init>(Connection.java:
1553 )
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:
285 )
    at java.sql.DriverManager.getConnection(DriverManager.java:
582 )
    at java.sql.DriverManager.getConnection(DriverManager.java:
185 )
    at addrbook.model.DBUtil.connectToDb(DBUtil.java:
26 )
    at addrbook.model.DBUtil.connectToDb(DBUtil.java:
36 )
    at addrbook.model.AddressBookBean.insert(AddressBookBean.java:
57 )
    at addrbook.action.InsertAction.execute(InsertAction.java:
55 )
    at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:
431 )
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:
236 )
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:
1196 )
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:
432 )
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:
710 )
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:
803 )
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
290 )
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:
206 )
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:
233 )
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:
175 )
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:
128 )
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:
102 )
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:
109 )
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:
263 )
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:
844 )
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:
584 )
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:
447 )
    at java.lang.Thread.run(Thread.java:
619 )
 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值