My stack trace
HTTP Status 500 - Unable to instantiate Action, java5s.DsTestAction, defined for 'insertAction' in namespace '/'/hibernate.cfg.xml not found
type Exception report
message Unable to instantiate Action, java5s.DsTestAction, defined for 'insertAction' in namespace '/'/hibernate.cfg.xml not found
description The server encountered an internal error that prevented it from fulfilling this request.
exception
Unable to instantiate Action, java5s.DsTestAction, defined for 'insertAction' in namespace '/'/hibernate.cfg.xml not found
com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:306)
com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocation.java:387)
com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:186)
org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:61)
org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39)
com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:47)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:458)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:395)
root cause
org.hibernate.HibernateException: /hibernate.cfg.xml not found
org.hibernate.util.ConfigHelper.getResourceAsStream(ConfigHelper.java:170)
org.hibernate.cfg.Configuration.getConfigurationInputStream(Configuration.java:1439)
org.hibernate.cfg.Configuration.configure(Configuration.java:1461)
org.hibernate.cfg.Configuration.configure(Configuration.java:1448)
java5s.HiberUtil.getSession(HiberUtil.java:9)
java5s.DataConnect.<init>(DataConnect.java:17)
java5s.DsTestAction.<init>(DsTestAction.java:23)
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
java.lang.reflect.Constructor.newInstance(Unknown Source)
java.lang.Class.newInstance(Unknown Source)
com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:119)
com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:150)
com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:139)
com.opensymphony.xwork2.ObjectFactory.buildAction(ObjectFactory.java:109)
com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:287)
com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocation.java:387)
com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:186)
org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:61)
org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39)
com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:47)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:458)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:395)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.47 logs.
我一直在用Hibernate Integration研究Struts2。当我试图实际实现它时,我得到了以下错误: 错误500:无法实例化在命名空间'/'中为'insertData'定义的Action,java5s.DsTestAction无法从资源TestBean.hbm.xml解析映射文档 我将我的代码放在下面。 我是hibernate的新手,请帮助解决我的问题。如果我的代码出错了,请纠正我。
My Session Factory code
package java5s;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HiberUtil {
public static Session getSession(){
SessionFactory sesfact = new Configuration().configure().buildSessionFactory();
return sesfact.openSession();
}
}
<!-- begin snippet: js hide: false -->
My ds Connection
package java5s;
import java.sql.Connection;
import java.sql.SQLException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
public class UserDao {
private DataSource ds;
private Connection con;
public Connection ConCheck()
{
try
{
Context ctx = new InitialContext();
ds = (DataSource) ctx.lookupLink("java:comp/env/jdbc/testdb");
try {
con = ds.getConnection();
}
catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
catch(NamingException e)
{
e.printStackTrace();
}
return con;
}
}
Class using SessionFactory
package java5s;
import org.hibernate.Session;
import org.hibernate.Transaction;
import java5s.TestBean;
import java5s.HiberUtil;
public class DataConnect {
Session ses;
public DataConnect() {
super();
//this.ses = ses;
if(ses==null){
ses= HiberUtil.getSession();
}
}
public void insert(Object ob){
try{
//if(ses==null)
//{
//TestBean bean = (TestBean)obj;
// ses =HiberUtil.getSession();
Transaction tx = ses.beginTransaction();
ses.save(ob);
System.out.println("Data inserted");
tx.commit();
//ses.close();
//}
}
catch(Exception e)
{
e.printStackTrace();
}
}
public String Update(TestBean obj){
String status = null;
//ses = HiberUtil.getSession();
if(ses!=null){
Transaction tx =ses.beginTransaction();
TestBean bn =(TestBean) ses.get(TestBean.class, obj.getId());
if(bn!=null)
{
bn.setPasssword(obj.getPasssword());
ses.update(bn);
status="data updated";
}
tx.commit();
System.out.println("Data updated");
}
return status;
}
}
Password generation Class
package java5s;
import java.lang.*;
public class GenPasswd {
public String GenPassword()
{
final int Pass_len=8;
StringBuffer sb = new StringBuffer();
for(int i=0;i<Pass_len;i++){
sb.append((char)((int)(Math.random()*26)+97));
}
return sb.toString();
}
}
**My Bean Class**
package java5s;
public class TestBean {
private int id;
private String name;
private String age;
private String location;
private String passsword;
private String new_password;
public String getNew_password() {
return new_password;
}
public void setNew_password(String new_password) {
this.new_password = new_password;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getLocation() {
return location;
}
public void setLocation(String location) {
this.location = location;
}
public String getPasssword() {
return passsword;
}
public void setPasssword(String passsword) {
this.passsword = passsword;
}
}
My Context.xml
<?xml version="1.0" encoding="UTF-8"?>
<context>
<Resource name="jdbc/testdb"
type="javax.sql.DataSource"
auth="Container"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@10.12.1.147:1521:orcl"
username="hr"
password="hr"
maxActive="10" maxIdle="4" />
</context>
My 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">
<hibernate-configuration>
<session-factory>
<property name="hibernate.dialect">org.hibernate.dialect.OracleDialect</property>
<property name="hibernate.connection.datasource">java:comp/env/jdbc/testdb</property>
<mapping resource="TestBean.hbm.xml"/>
</session-factory>
</hibernate-configuration>
My TestBean.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="java5s.TestBean" table="registrations_1">
<id name="id" column="id">
<generator class="increment"></generator>
</id>
<property name="name" column="name"/>
<property name="age" column="age"/>
<property name="location" column="location"/>
<property name="password" column="password"/>
</class>
</hibernate-mapping>
My struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="default" extends="struts-default">
<action name="*DsTestAction" class="java5s.DsTestAction" method="{1}">
<result name="success">success.jsp</result>
<result name="error">error.jsp</result>
</action>
</package>
</struts>
My wb.xml file
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>HibernateStrutsIntegrationEx</display-name>
<welcome-file-list>
<welcome-file>registration.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
My registration.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<%@ taglib uri="/struts-tags" prefix="s"%>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<s:form action="DsTestAction" method="post">
<s:textfield name="bean.name" label="Name"/>
<s:textfield name="bean.age" label="Age"/>
<s:textfield name="bean.location" label="Location"/>
<s:submit action="insertDsTestAction" value="Save"></s:submit>
<s:submit action="UpdateDsTestAction" value="Update"></s:submit>
</s:form>
</body>
</html>
My success.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<%@ taglib uri="/struts-tags" prefix="s"%>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Struts2 Events</title>
</head>
<body>
<center>
<br>
Hello <b><s:property value="bean.name"/></b>
<br>
You Have been Successfully registered
<br>
Your Id is :<b><s:property value="bean.id"/></b>
<br>
&
<br>
Your password is :<s:property value ="bean.password"/><br>
<a href="ChangePasswd.jsp">Change Password</a>
<br> Your Other details</br>
<table border="1">
<b><tr><th>Age</th><th>Location</th></tr></b>
<tr><td><s:property value="bean.age"/></td><td><s:property value="bean.location"/></td></tr>
</table>
<br><s:property value="message"/>
</center>
</body>
</html>
My error.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- <%@ page import="model.TestBean" %>-->
<%@ taglib uri="/struts-tags" prefix="s" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Struts2 Events</title>
</head>
<body>
<center> Error.</center>
</body>
</html>