tomcat连接Oracle数据库问题

gaoguojun1988 2009-11-17 09:11:29
用JDBC直接连接数据库 ok 没问题
可是用tomcat连接 就抛出异常 我用的Eclipse6.0 tomcat6.0 Oracle9i tomcat连接数据库连接池都配置好了
请高手指点 我错在哪里 我的AddMessageServlet.java:76的代码是connection.close()//关闭连接
可是好像connection就没创建才会报错的。。。
严重: Servlet.service() for servlet AddMessageServlet threw exception
java.lang.NullPointerException
at guestbook.AddMessageServlet.doPost(AddMessageServlet.java:76)
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(Unknown Source)
...全文
175 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
gaoguojun1988 2009-11-19
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 jiaxue07 的回复:]
再重新设置几次,有时候是电脑的问题
[/Quote]
难道要重装Oracle?重装tomcat还好说。。
gaoguojun1988 2009-11-19
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 sangshusen_1988 的回复:]
数据源没配置好吧
[/Quote]

我是跟着视频一步一步配置的啊
这是我tomcat 中的配置
<Resource name="jdbc/oracleds" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" username="scott" password="123" driverClassName="oracle.jdbc.OracleDriver" url="jdbc:oracle:thin:@192.168.1.2:1521:ora9" />没问题啊。说过很多次了,直接用JDBC就好使,
用tomcat连接数据库就不行。郁闷了。
gaoguojun1988 2009-11-19
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 lxd520123 的回复:]
你使用if(connection!=null){connection.close()} 就没错,那说明
connection就为null

看了你的代码,我觉得程序执行了这个if,没进else:

if (StringUtil.validateNull(name)) {
out.println("对不起,姓名不能为空,请您重新输入! <br>");
out.println(" <a href=\"" + request.getContextPath()
+ "/addMessage.html\">添加新的留言 </a> <br>");
} else if (StringUtil.validateNull(title)) {
out.println("对不起,主题不能为空,请您重新输入! <br>");
out.println(" <a href=\"" + request.getContextPath()
+ "/addMessage.html\">添加新的留言 </a> <br>");
}
[/Quote]


执行的是:
if (result == 0) {
out.println("对不起,添加留言不成功,请您重新输入! <br>");
out.println(" <a href=\"" + request.getContextPath()
+ "/addMessage.html\">添加新的留言 </a> <br>");
}
我html中有jsvalidation验证,所以不可能执行你说的语句。
jiaxue07 2009-11-17
  • 打赏
  • 举报
回复
再重新设置几次,有时候是电脑的问题
sangshusen_1988 2009-11-17
  • 打赏
  • 举报
回复
数据源没配置好吧
cklxh520 2009-11-17
  • 打赏
  • 举报
回复
程序执行到
AddMessageServlet.java:76行的时候..


connection=null

如果之前的查询数据库 已经 成功...只是最后关闭的 时候出现了这个问题..那应该是 在你 AddMessageServlet.java:76行前的 某个地方改变了connection的值...
bunrise 2009-11-17
  • 打赏
  • 举报
回复
你使用if(connection!=null){connection.close()} 就没错,那说明
connection就为null

看了你的代码,我觉得程序执行了这个if,没进else:

if (StringUtil.validateNull(name)) {
out.println("对不起,姓名不能为空,请您重新输入! <br>");
out.println(" <a href=\"" + request.getContextPath()
+ "/addMessage.html\">添加新的留言 </a> <br>");
} else if (StringUtil.validateNull(title)) {
out.println("对不起,主题不能为空,请您重新输入! <br>");
out.println(" <a href=\"" + request.getContextPath()
+ "/addMessage.html\">添加新的留言 </a> <br>");
}
gaoguojun1988 2009-11-17
  • 打赏
  • 举报
回复
补充:在做上个例子的时候 sql语句是查询语句 可是也查不出来。 直接用jdbc好使,用tomcat连接数据库就不好使。
gaoguojun1988 2009-11-17
  • 打赏
  • 举报
回复
#2楼 得分:0回复于:2009-11-17 10:22:32
程序执行到 AddMessageServlet.java:76行的时候..
connection=null
如果之前的查询数据库 已经 成功...只是最后关闭的 时候出现了这个问题..那应该是 在你 AddMessageServlet.java:76行前的 某个地方改变了connection的值...


你说的话提醒了我 我把connection.close()语句变成if(connection!=null){connection.close()}
ok 他不报错了 因为程序开始声明Connection的时候把他赋值为null。但是这样的话虽然不报错 可是我想执行的程序也没执行啊。源代码:
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String sql = "insert into guestbook (id,name,email,phone,title,content,time) values(gb_seq.nextval,?,?,?,?,?,?)";
int result = 0;
Connection conn = null;
request.setCharacterEncoding("utf-8");

String name = request.getParameter("name");
String title = request.getParameter("title");

response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();

out.println("<html>");
out.println("<head><title>guestbook input page</title></head>");
out.println("<body>");

if (StringUtil.validateNull(name)) {
out.println("对不起,姓名不能为空,请您重新输入!<br>");
out.println("<a href=\"" + request.getContextPath()
+ "/addMessage.html\">添加新的留言</a><br>");
} else if (StringUtil.validateNull(title)) {
out.println("对不起,主题不能为空,请您重新输入!<br>");
out.println("<a href=\"" + request.getContextPath()
+ "/addMessage.html\">添加新的留言</a><br>");
} else {
try {
Context context = new InitialContext();
DataSource ds = (DataSource)context.lookup ("java:/comp/env/jdbc/oracleds");
conn = ds.getConnection();
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, StringUtil.filterHtml(name));
pstmt.setString(2, StringUtil.filterHtml(request
.getParameter("email")));
pstmt.setString(3, StringUtil.filterHtml(request
.getParameter("phone")));
pstmt.setString(4, StringUtil.filterHtml(title));
pstmt.setString(5, request.getParameter("content"));

SimpleDateFormat sdf = new SimpleDateFormat(
"yyyy-MM-dd hh:mm:ss");
pstmt.setString(6, sdf.format(new java.util.Date()));
result = pstmt.executeUpdate();
pstmt.close();
} catch (NamingException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
if (result == 0) {
out.println("对不起,添加留言不成功,请您重新输入!<br>");
out.println("<a href=\"" + request.getContextPath()
+ "/addMessage.html\">添加新的留言</a><br>");
} else {
out.println("祝贺您,成功添加留言。<br>");
out.println("<a href=\"" + request.getContextPath()
+ "/servlet/getMessage\">查看所有留言内容</a><br>");
}
out.println("</body>");
out.println("</html>");
out.flush();
out.close();
}
}
用的tomcat自带数据库连接池,配置没问题。不知道为什么不执行数据库的更新操作。
gaoguojun1988 2009-11-17
  • 打赏
  • 举报
回复
回复于:2009-11-17 09:20:22java.lang.NullPointerException
在操作过程中出现空异常,你最好还是粘代码吧!


没错 我出错后就看代码 没问题
可是我还是把原代码粘贴过来了 。 还是不好使。
closewbq 2009-11-17
  • 打赏
  • 举报
回复
java.lang.NullPointerException
在操作过程中出现空异常,你最好还是粘代码吧!

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧