- 浏览: 431712 次
- 来自: ...
文章分类
最新评论
-
u010174629:
<a>jsjdi</a>
JS(去掉前后空格或去掉所有空格)的用法 -
吾兮子:
[b][i][u]引用[list]
[*][img][url] ...
JS(去掉前后空格或去掉所有空格)的用法 -
guyunduzai:
请教,每小时触发一次规则该怎么写?
Quartz 触发器(SimpleTrigger&CronTrigger )配置说明 & cronExpression表达式 -
lvzhou_31:
能不能把msgpack-0.5.1-devel.jar给下。m ...
msgpack -
h416373073:
正在学习这个,很有用
Quartz 触发器(SimpleTrigger&CronTrigger )配置说明 & cronExpression表达式
#
# An unexpected error has been detected by HotSpot Virtual Machine:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x7c95f350, pid=3964, tid=4024
#
# Java VM: Java HotSpot(TM) Client VM (1.5.0-b64 mixed mode)
# Problematic frame:
# C [ntdll.dll+0x2f350]
#
--------------- T H R E A D ---------------
Current thread (0x275ad650): JavaThread "http-0.0.0.0-80-Processor21" daemon [_thread_in_native, id=4024]
siginfo: ExceptionCode=0xc0000005, writing address 0x00000008
Registers:
EAX=0x00000000, EBX=0x00000000, ECX=0x00000008, EDX=0x00000004
ESP=0x2879ed14, EBP=0x2879ed20, ESI=0x00000008, EDI=0x00000000
EIP=0x7c95f350, EFLAGS=0x00010297
Top of Stack: (sp=0x2879ed14)
0x2879ed14: 00000000 00000000 00000008 2879ed3c
0x2879ed24: 4b784c16 00000004 28a22f8c 4b7527af
0x2879ed34: 28a22f8c 28a22f68 2879ed74 4b758af9
0x2879ed44: 28a22f8c 4b780000 275ad70c 23e621d0
0x2879ed54: 00000001 00000000 2879ed48 2879e940
0x2879ed64: 2879fce8 4b785705 4b758ac8 ffffffff
0x2879ed74: 2879ed8c 4b758a9d 28a22f68 2879edac
0x2879ed84: 26e80418 275ad70c 2879eda4 6d371157
Instructions: (pc=0x7c95f350)
0x7c95f340: 56 8d 72 04 57 89 75 fc b8 00 00 00 00 8b 4d fc
0x7c95f350: f0 0f b3 01 0f 92 c0 84 c0 0f 84 95 0f 00 00 64
Stack: [0x28760000,0x287a0000), sp=0x2879ed14, free space=251k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C [ntdll.dll+0x2f350]
C [ODBC32.dll+0x34c16]
C [ODBC32.dll+0x8af9]
C [ODBC32.dll+0x8a9d]
C [JdbcOdbc.dll+0x1157]
j sun.jdbc.odbc.JdbcOdbc.allocConnect(J[B)J+0
j sun.jdbc.odbc.JdbcOdbc.SQLAllocConnect(J)J+30
j sun.jdbc.odbc.JdbcOdbcDriver.allocConnection(J)J+6
j sun.jdbc.odbc.JdbcOdbcConnection.initialize(Ljava/lang/String;Ljava/util/Properties;I)V+37
j org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Lorg/apache/tomcat/util/net/TcpConnection;[Ljava/lang/Object;)V+113
j org.apache.tomcat.util.net.TcpWorkerThread.runIt([Ljava/lang/Object;)V+159
j org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run()V+167
j java.lang.Thread.run()V+11
v ~StubRoutines::call_stub
V [jvm.dll+0x8168d]
V [jvm.dll+0xd4179]
V [jvm.dll+0x8155e]
V [jvm.dll+0x812bb]
V [jvm.dll+0x9bbe9]
V [jvm.dll+0xfe77f]
V [jvm.dll+0xfe74d]
C [MSVCRT.dll+0x2b530]
C [kernel32.dll+0x26063]
Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j sun.jdbc.odbc.JdbcOdbc.allocConnect(J[B)J+0
j sun.jdbc.odbc.JdbcOdbc.SQLAllocConnect(J)J+30
j sun.jdbc.odbc.JdbcOdbcDriver.allocConnection(J)J+6
j sun.jdbc.odbc.JdbcOdbcConnection.initialize(Ljava/lang/String;Ljava/util/Properties;I)V+37
j org.apache.catalina.core.StandardValveContext.invokeNext(Lorg/apache/catalina/Request;Lorg/apache/catalina/Response;)V
J org.apache.catalina.core.StandardPipeline.invoke(Lorg/apache/catalina/Request;Lorg/apache/catalina/Response;)V
v ~RuntimeStub::alignment_frame_return Runtime1 stub
j org.apache.catalina.core.StandardEngineValve.invoke(Lorg/apache/catalina/Request;Lorg/apache/catalina/Response;Lorg/apache/catalina/ValveContext;)V+59
J org.apache.catalina.core.StandardValveContext.invokeNext(Lorg/apache/catalina/Request;Lorg/apache/catalina/Response;)V
J org.apache.catalina.core.StandardPipeline.invoke(Lorg/apache/catalina/Request;Lorg/apache/catalina/Response;)V
j org.apache.catalina.core.ContainerBase.invoke(Lorg/apache/catalina/Request;Lorg/apache/catalina/Response;)V+6
j org.apache.coyote.tomcat5.CoyoteAdapter.service(Lorg/apache/coyote/Request;Lorg/apache/coyote/Response;)V+137
J org.apache.coyote.http11.Http11Processor.process(Ljava/io/InputStream;Ljava/io/OutputStream;)V
j org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Lorg/apache/tomcat/util/net/TcpConnection;[Ljava/lang/Object;)V+113
j org.apache.tomcat.util.net.TcpWorkerThread.runIt([Ljava/lang/Object;)V+159
j org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run()V+167
j java.lang.Thread.run()V+11
v ~StubRoutines::call_stub
--------------- P R O C E S S ---------------
Java Threads: ( => current thread )
0x27aee330 JavaThread "TP-Monitor" daemon [_thread_blocked, id=3580]
0x27af09a8 JavaThread "TP-Processor4" daemon [_thread_in_native, id=3772]
0x008f5ab8 JavaThread "Reference Handler" daemon [_thread_blocked, id=812]
Other Threads:
0x00035040 VMThread [id=320]
0x00908d00 WatcherThread [id=3184]
VM state:not at safepoint (normal execution)
VM Mutex/Monitor currently owned by a thread: None
Heap
def new generation total 9216K, used 7249K [0x029b0000, 0x033a0000, 0x05110000)
eden space 8256K, 87% used [0x029b0000, 0x030c4558, 0x031c0000)
from space 960K, 0% used [0x032b0000, 0x032b0000, 0x033a0000)
to space 960K, 0% used [0x031c0000, 0x031c0000, 0x032b0000)
tenured generation total 121024K, used 30777K [0x05110000, 0x0c740000, 0x229b0000)
the space 121024K, 25% used [0x05110000, 0x06f1e668, 0x06f1e800, 0x0c740000)
compacting perm gen total 22528K, used 22350K [0x229b0000, 0x23fb0000, 0x269b0000)
the space 22528K, 99% used [0x229b0000, 0x23f83a90, 0x23f83c00, 0x23fb0000)
No shared spaces configured.
起初怀疑是申请数据库连接数过多导致服务器崩溃,优化了连接池,并做了个测试,用上千个线程获得连接,不会导致JVM CRASH。顶多抛得不到连接的警告,最后在机器上不停的开多个浏览器窗口进行刷新页面(首页大概15个IFRAME,每个IFRAME中使用了一个CONNECTION),每次刷新可能会需要15个CONN,大约在刷新很长一段时间后,重现出了此故障。
在百度和GOOGLE上找了一把,大致原因在SUN官网上看到一个BUG,JDBC-ODBC DRIVER的一个BUG,JDBC-ODBC一般就不应该作为商用,一般就做为测试时使用的驱动,本身JDBC-ODBC驱动对多线程的支持不好,在单线程下跑没有问题,但是在多线程下可能导致JVM CRASH。
基本找到原因,于是把JDK升级到1.6,期望在1.6中解决了这个BUG,但是事实上升级后还是有这个问题,看来1.6中依然有这个问题.
于是既然是驱动的问题,索性不用JDBC-ODBC方式驱动,想找一个ACCESS 的纯JDBC驱动,找了很久找到一个HXTT第三方驱动:access.jar
<dbconfig>
<type>access</type>
<driver>com.hxtt.sql.access.AccessDriver</driver>
<url>jdbc:Access:///../server/default/deploy/web-tomcat50.sar/ROOT.war/res/DBSystem.mdb</url>
<user></user>
<password></password>
</dbconfig>
更换驱动后,到是没有这个问题了,但是让人更郁闷的是,网上所有的这个三方驱动都是试用版,最多支持50次请求,超过50次会抛出异常导致无法使用,天哪真是越搞越麻烦了。到HXTT官网上一看,这个驱动要卖100欧元,算了,忍了为了个驱动,太不值了,尝试找了个反编译工具,把这个驱动的代码反编译出来,把请求次数限制并抛异常部分去掉,可惜的是代码经过了混淆,反编译出来有很多问题(也是,人家卖100欧元的东西能让你这么轻易搞定吗?)
浪费太多的时间,为了节省时间,决定不在一棵树上吊死,换了数据库,并采用纯JDBC驱动方式最终解决这个问题,捆扰一时的问题终于解决了。
from:http://blog.csdn.net/foxliucong/article/details/3750873
# An unexpected error has been detected by HotSpot Virtual Machine:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x7c95f350, pid=3964, tid=4024
#
# Java VM: Java HotSpot(TM) Client VM (1.5.0-b64 mixed mode)
# Problematic frame:
# C [ntdll.dll+0x2f350]
#
--------------- T H R E A D ---------------
Current thread (0x275ad650): JavaThread "http-0.0.0.0-80-Processor21" daemon [_thread_in_native, id=4024]
siginfo: ExceptionCode=0xc0000005, writing address 0x00000008
Registers:
EAX=0x00000000, EBX=0x00000000, ECX=0x00000008, EDX=0x00000004
ESP=0x2879ed14, EBP=0x2879ed20, ESI=0x00000008, EDI=0x00000000
EIP=0x7c95f350, EFLAGS=0x00010297
Top of Stack: (sp=0x2879ed14)
0x2879ed14: 00000000 00000000 00000008 2879ed3c
0x2879ed24: 4b784c16 00000004 28a22f8c 4b7527af
0x2879ed34: 28a22f8c 28a22f68 2879ed74 4b758af9
0x2879ed44: 28a22f8c 4b780000 275ad70c 23e621d0
0x2879ed54: 00000001 00000000 2879ed48 2879e940
0x2879ed64: 2879fce8 4b785705 4b758ac8 ffffffff
0x2879ed74: 2879ed8c 4b758a9d 28a22f68 2879edac
0x2879ed84: 26e80418 275ad70c 2879eda4 6d371157
Instructions: (pc=0x7c95f350)
0x7c95f340: 56 8d 72 04 57 89 75 fc b8 00 00 00 00 8b 4d fc
0x7c95f350: f0 0f b3 01 0f 92 c0 84 c0 0f 84 95 0f 00 00 64
Stack: [0x28760000,0x287a0000), sp=0x2879ed14, free space=251k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C [ntdll.dll+0x2f350]
C [ODBC32.dll+0x34c16]
C [ODBC32.dll+0x8af9]
C [ODBC32.dll+0x8a9d]
C [JdbcOdbc.dll+0x1157]
j sun.jdbc.odbc.JdbcOdbc.allocConnect(J[B)J+0
j sun.jdbc.odbc.JdbcOdbc.SQLAllocConnect(J)J+30
j sun.jdbc.odbc.JdbcOdbcDriver.allocConnection(J)J+6
j sun.jdbc.odbc.JdbcOdbcConnection.initialize(Ljava/lang/String;Ljava/util/Properties;I)V+37
j org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Lorg/apache/tomcat/util/net/TcpConnection;[Ljava/lang/Object;)V+113
j org.apache.tomcat.util.net.TcpWorkerThread.runIt([Ljava/lang/Object;)V+159
j org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run()V+167
j java.lang.Thread.run()V+11
v ~StubRoutines::call_stub
V [jvm.dll+0x8168d]
V [jvm.dll+0xd4179]
V [jvm.dll+0x8155e]
V [jvm.dll+0x812bb]
V [jvm.dll+0x9bbe9]
V [jvm.dll+0xfe77f]
V [jvm.dll+0xfe74d]
C [MSVCRT.dll+0x2b530]
C [kernel32.dll+0x26063]
Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j sun.jdbc.odbc.JdbcOdbc.allocConnect(J[B)J+0
j sun.jdbc.odbc.JdbcOdbc.SQLAllocConnect(J)J+30
j sun.jdbc.odbc.JdbcOdbcDriver.allocConnection(J)J+6
j sun.jdbc.odbc.JdbcOdbcConnection.initialize(Ljava/lang/String;Ljava/util/Properties;I)V+37
j org.apache.catalina.core.StandardValveContext.invokeNext(Lorg/apache/catalina/Request;Lorg/apache/catalina/Response;)V
J org.apache.catalina.core.StandardPipeline.invoke(Lorg/apache/catalina/Request;Lorg/apache/catalina/Response;)V
v ~RuntimeStub::alignment_frame_return Runtime1 stub
j org.apache.catalina.core.StandardEngineValve.invoke(Lorg/apache/catalina/Request;Lorg/apache/catalina/Response;Lorg/apache/catalina/ValveContext;)V+59
J org.apache.catalina.core.StandardValveContext.invokeNext(Lorg/apache/catalina/Request;Lorg/apache/catalina/Response;)V
J org.apache.catalina.core.StandardPipeline.invoke(Lorg/apache/catalina/Request;Lorg/apache/catalina/Response;)V
j org.apache.catalina.core.ContainerBase.invoke(Lorg/apache/catalina/Request;Lorg/apache/catalina/Response;)V+6
j org.apache.coyote.tomcat5.CoyoteAdapter.service(Lorg/apache/coyote/Request;Lorg/apache/coyote/Response;)V+137
J org.apache.coyote.http11.Http11Processor.process(Ljava/io/InputStream;Ljava/io/OutputStream;)V
j org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Lorg/apache/tomcat/util/net/TcpConnection;[Ljava/lang/Object;)V+113
j org.apache.tomcat.util.net.TcpWorkerThread.runIt([Ljava/lang/Object;)V+159
j org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run()V+167
j java.lang.Thread.run()V+11
v ~StubRoutines::call_stub
--------------- P R O C E S S ---------------
Java Threads: ( => current thread )
0x27aee330 JavaThread "TP-Monitor" daemon [_thread_blocked, id=3580]
0x27af09a8 JavaThread "TP-Processor4" daemon [_thread_in_native, id=3772]
0x008f5ab8 JavaThread "Reference Handler" daemon [_thread_blocked, id=812]
Other Threads:
0x00035040 VMThread [id=320]
0x00908d00 WatcherThread [id=3184]
VM state:not at safepoint (normal execution)
VM Mutex/Monitor currently owned by a thread: None
Heap
def new generation total 9216K, used 7249K [0x029b0000, 0x033a0000, 0x05110000)
eden space 8256K, 87% used [0x029b0000, 0x030c4558, 0x031c0000)
from space 960K, 0% used [0x032b0000, 0x032b0000, 0x033a0000)
to space 960K, 0% used [0x031c0000, 0x031c0000, 0x032b0000)
tenured generation total 121024K, used 30777K [0x05110000, 0x0c740000, 0x229b0000)
the space 121024K, 25% used [0x05110000, 0x06f1e668, 0x06f1e800, 0x0c740000)
compacting perm gen total 22528K, used 22350K [0x229b0000, 0x23fb0000, 0x269b0000)
the space 22528K, 99% used [0x229b0000, 0x23f83a90, 0x23f83c00, 0x23fb0000)
No shared spaces configured.
起初怀疑是申请数据库连接数过多导致服务器崩溃,优化了连接池,并做了个测试,用上千个线程获得连接,不会导致JVM CRASH。顶多抛得不到连接的警告,最后在机器上不停的开多个浏览器窗口进行刷新页面(首页大概15个IFRAME,每个IFRAME中使用了一个CONNECTION),每次刷新可能会需要15个CONN,大约在刷新很长一段时间后,重现出了此故障。
在百度和GOOGLE上找了一把,大致原因在SUN官网上看到一个BUG,JDBC-ODBC DRIVER的一个BUG,JDBC-ODBC一般就不应该作为商用,一般就做为测试时使用的驱动,本身JDBC-ODBC驱动对多线程的支持不好,在单线程下跑没有问题,但是在多线程下可能导致JVM CRASH。
基本找到原因,于是把JDK升级到1.6,期望在1.6中解决了这个BUG,但是事实上升级后还是有这个问题,看来1.6中依然有这个问题.
于是既然是驱动的问题,索性不用JDBC-ODBC方式驱动,想找一个ACCESS 的纯JDBC驱动,找了很久找到一个HXTT第三方驱动:access.jar
<dbconfig>
<type>access</type>
<driver>com.hxtt.sql.access.AccessDriver</driver>
<url>jdbc:Access:///../server/default/deploy/web-tomcat50.sar/ROOT.war/res/DBSystem.mdb</url>
<user></user>
<password></password>
</dbconfig>
更换驱动后,到是没有这个问题了,但是让人更郁闷的是,网上所有的这个三方驱动都是试用版,最多支持50次请求,超过50次会抛出异常导致无法使用,天哪真是越搞越麻烦了。到HXTT官网上一看,这个驱动要卖100欧元,算了,忍了为了个驱动,太不值了,尝试找了个反编译工具,把这个驱动的代码反编译出来,把请求次数限制并抛异常部分去掉,可惜的是代码经过了混淆,反编译出来有很多问题(也是,人家卖100欧元的东西能让你这么轻易搞定吗?)
浪费太多的时间,为了节省时间,决定不在一棵树上吊死,换了数据库,并采用纯JDBC驱动方式最终解决这个问题,捆扰一时的问题终于解决了。
from:http://blog.csdn.net/foxliucong/article/details/3750873
发表评论
-
记录笔记
2015-05-19 16:19 7376url:http://pan.baidu.com/s/1gdw ... -
学习记录4
2015-04-27 22:31 93url:http://pan.baidu.com/s/1gdw ... -
记录备份3
2015-04-27 22:29 140url:http://pan.baidu.com/s/1gdw ... -
记录备份2
2015-04-13 16:34 73url:http://pan.baidu.com/s/1gdw ... -
记录备份1
2015-04-13 16:00 2625url:http://pan.baidu.com/s/1gdw ... -
远程连接服务器时本地磁盘不能显示
2015-03-27 16:16 1172远程连接服务器时本地磁盘不能显示 2009- ... -
postDelayed方法和removeCallbacks方法的使用
2015-01-05 00:22 3569方法postDelayed的作用是 ... -
No enclosing instance of type E is accessible
2015-01-03 19:04 961最近在看Java,在编译写书上一个例子时,由于书上的代码只有 ... -
msgpack
2015-01-03 19:01 4733msgpack简介 MessagePack是一个基于二进制 ... -
异步任务AsyncTask使用解析
2015-01-03 15:47 998AsyncTask主要用来更新UI线程,比较耗时的操作可以在 ... -
java 调用 .so 文件
2015-01-02 21:03 2143我的测试过程,请参考。Java代码(Test.java): ... -
android 使用Alarm
2015-01-03 15:45 1029使用Alarm Alarm是在 ... -
反编译出现access$分析
2015-01-02 23:06 53261)static Type access$iii(Oute ... -
jd-gui反编译 access$xxx类函数说明
2015-01-01 22:19 2816使用jd-gui反编译后去掉注释 /\* *\d* *\*/ ... -
构造方法的反射应用constructor方法newInstance(Obeject...initargs)功能
2015-01-01 22:15 1325Constructor类代表某个类 ... -
构造方法的反射应用constructor方法newInstance(Obeject...initargs)功能
2015-01-01 22:14 5Constructor类代表某个类中的一个构造方法 得到某 ... -
java.lang.Class.getDeclaredConstructor()方法实例
2015-01-01 21:59 14782java.lang.Class.getDeclaredCo ... -
java常用的设计模式
2014-11-07 16:52 8551.单例设计模式 所谓单例设计模式简单说就 ... -
Android获取经纬度,计算距离,方位角
2014-08-29 17:10 8979最近在Android上做GPS的东西,获取经纬度、计算距离、 ... -
No Hibernate Session bound to thread, and configuration does not allow creation
2014-07-25 11:21 1019没有添加事务支持,就不能从线程资源中获取Session 。 s ...
相关推荐
本文将详细讲解如何使用Java Server Pages (JSP)与Access数据库进行交互,实现一个简单的实例,帮助理解两者结合的基础知识。 首先,我们要确保已经安装了JDK、Tomcat(或其他Servlet容器)以及Access数据库。...
【描述】:Tomcat自恢复是一个重要的运维策略,它确保了即使在Tomcat服务器遇到问题如内存溢出、线程阻塞或系统崩溃等情况下,能够快速恢复服务,减少因服务中断带来的业务损失。这个过程通常包括设置监控工具来检测...
这个压缩包文件是一个大学毕业设计项目,使用Java编程语言与Access数据库技术进行开发的综合测评系统。这个系统可能包含了实现学生评估、课程评价、教师评价等功能,适用于教育机构或学校的教学管理。下面我们将深入...
例如,用户提交查询请求后,JSP会调用JavaBean中的方法,该方法使用预编译的SQL查询语句从Access数据库中检索图书信息。 5. **请求和响应处理**:HTTP请求由Servlet容器(如Tomcat)接收,然后转发到相应的JSP页面...
系统可能使用DAO(Data Access Object)模式来封装数据库操作。 6. **会话管理**: 为了跟踪用户的点餐状态,系统会使用HTTP会话(session)存储用户信息,例如购物车中的菜品、用户登录状态等。`HttpSession`对象...
在学生管理系统中,开发者可能创建了DAO(Data Access Object)层,封装了数据库操作,使得业务逻辑层与数据库操作解耦。 五、控制层与业务逻辑 控制层负责接收用户请求,调用业务逻辑处理数据,然后返回响应。可能...
该系统的开发使用了Java编程语言,结合SpringBoot框架、SSM(Spring、SpringMVC、MyBatis)架构和jsp技术,具有高度可扩展性和稳定性。 SpringBoot作为核心框架,以其简化开发、快速启动和运行的特点,为系统提供了...
- 向导是一种辅助工具,用于帮助用户创建表、查询等对象,但它本身不是Access数据库的对象类型之一。 #### 18. 计算控件的表达式前缀 - **题目描述**:在计算控件中,每个表达式前应加上什么符号? - **选项分析*...
本文将深入探讨一个使用JSP、Tomcat服务器和Access数据库构建的员工培训管理系统,为初学者提供参考。 JSP(JavaServer Pages)是一种动态网页技术,它允许开发者在HTML页面中嵌入Java代码,实现服务器端的业务逻辑...
在本系统中,我们使用 JSP 作为服务器端脚本语言,Tomcat 作为 Web 服务器,MySQL 作为数据库管理系统。 2. JSP 在线考试系统的需求分析 根据高校教学考试的需求,我们可以将考试系统分为三个部分:考试管理、试题...
同时,Data Access Object(DAO)层负责具体的数据库操作,封装了对数据库的访问。 7. **会话管理**:为了保持用户的登录状态,系统可能使用了session技术。当用户登录成功后,会话开始,直到用户退出或会话超时。 ...
DAO(Data Access Object)层则封装了与数据库交互的逻辑,使得业务层代码更专注于业务逻辑。 8. **异常处理**:在处理数据库操作时,必须考虑可能出现的异常,如SQLException。良好的异常处理能提高程序的健壮性,...
4. **DAO设计模式**:Data Access Object模式用于封装对数据库的操作,提高代码复用性。 5. **实体类和数据持久化**:通过对象-关系映射(ORM)技术如Hibernate,实现Java对象和数据库表的对应,简化数据操作。 6....
13. **部署与运行**:项目完成后,打包成WAR或JAR文件,部署在服务器如Tomcat上,配置好环境变量和数据库连接,即可运行。 14. **文档编写**:系统开发过程中应编写详细的文档,包括需求分析、系统设计、用户手册等...
4. **后端服务异常**:例如数据库连接问题、应用服务崩溃等。 5. **防火墙或安全组规则**:阿里云的安全组配置可能阻止了Nginx与后端服务的通信。 解决这个问题,我们可以按照以下步骤进行: 1. **检查后端服务...
- **DAO(Data Access Object)模式**:用于封装对数据库的操作,提高代码的可重用性和可测试性。 - **框架**:可能使用Struts、SpringMVC或Spring Boot等框架,简化开发流程,提供依赖注入等功能。 - **MyBatis*...
9. **部署与运行**:系统可能需要一个Web服务器来部署,如Tomcat或Jetty,用户可以通过浏览器访问并使用图书管理系统。 10. **配置管理**:配置文件(如application.properties或application.yml)用于存储数据库...
9. **安全性考虑**:在处理用户输入时,项目应考虑SQL注入等安全问题,使用预编译的PreparedStatement来防止此类攻击。同时,密码等敏感信息应进行加密存储。 10. **部署与运行**:项目最终会被打包成WAR文件,部署...
它采用经典的三层架构设计,包括表现层(Presentation Layer)、业务逻辑层(Business Logic Layer)和数据访问层(Data Access Layer),旨在实现对学校教务工作的高效管理和自动化操作。 1. **表现层**:这是用户...