错误500 - 无法实例化Action,无法解析资源TestBean.hbm.xml中的映射文档

时间:2015-01-08 10:54:01

标签: hibernate hibernate-mapping

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>

0 个答案:

没有答案