我正在尝试制作一个第三方的简单的独立/摇摆应用程序,该应用程序使用hibernate模式在另一个应用程序的数据库上进行连接,所以这是我所做的:
1-使用的jar:
hibernate-core-3.5.1-Final
hibernate-entitymanager-3.5.1-Final
hibernate-jpa-2.0-api-1.0.0.Final
hibernate-annotations-3.5.1-Final
hibernate-commons-annotations-3.2.0.Final
dom4j-1.6.1
slf4j-api-1.6.4
slf4j-log4j12-1.6.4
log4j-1.2.16.jar
commons-collections-3.2
jta-1.1
mysql-connector-java-5.1.14 (or compatible connector with your DB)
commons-logging-1.1.1
commons-collections-3.2
2- hibernate.cfg.xml(位于src文件夹中):
<?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="show_sql">true</property>
<property name="format_sql">true</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://127.0.0.1:3306/myapp</property>
<property name="connection.username">myuser</property>
<property name="connection.password">mypass</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="current_session_context_class">thread</property>
</session-factory>
</hibernate-configuration>
3- SessionFactoryHelper:
public class SessionFactoryHelper {
private static final SessionFactory sessionFactory;
static {
try {
/*
* Build a SessionFactory object from session-factory configuration
* defined in the hibernate.cfg.xml file. In this file we register
* the JDBC connection information, connection pool, the hibernate
* dialect that we used and the mapping to our hbm.xml file for each
* POJO (Plain Old Java Object).
*/
sessionFactory = new Configuration().configure()
.buildSessionFactory();
} catch (Throwable e) {
System.err.println("Error in creating SessionFactory object."
+ e.getMessage());
throw new ExceptionInInitializerError(e);
}
}
/*
* A static method for other application to get SessionFactory object
* initialized in this helper class.
*/
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
4-样本查询:
Session session = SessionFactoryHelper.getSessionFactory()
.getCurrentSession();
session.beginTransaction();
int count = (Integer) session.createSQLQuery(
"select count(*) from users").uniqueResult();
session.getTransaction().commit();
System.out.println("Users Count: " + count);
运行该应用程序时,出现以下异常:
Error in creating SessionFactory object.invalid configuration
Exception in thread "main" java.lang.ExceptionInInitializerError
at com.xeno.xecamp.desktopManagement.SessionFactoryHelper.<clinit>(SessionFactoryHelper.java:24)
at com.myapp.Main.main(Main.java:9)
Caused by: org.hibernate.MappingException: invalid configuration
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1579)
at org.hibernate.cfg.Configuration.configure(Configuration.java:1520)
at org.hibernate.cfg.Configuration.configure(Configuration.java:1506)
at com.xeno.xecamp.desktopManagement.SessionFactoryHelper.<clinit>(SessionFactoryHelper.java:19)
... 1 more
Caused by: org.xml.sax.SAXParseException: Document is invalid: no grammar found.
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:131)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:384)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:318)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:250)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDriver.scanRootElementHook(XMLNSDocumentScannerImpl.java:626)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:3103)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:922)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
at org.dom4j.io.SAXReader.read(SAXReader.java:465)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1576)
... 4 more
谁能告诉我我的配置出了什么问题?
这个问题与Hibernate根本无关,而与XML结构有关。
Hibernate将SAX
Reader设置为使用验证(org.hibernate.util.XMLHelper#createSAXReader(String,List,EntityResolver)
它变得更像这样:
SAXParserFactory factory = SAXParserFactory.newInstance();
factory.setValidating(true);
factory.setNamespaceAware(true);
Java Dosc说
方法setValidating(boolean)-进行DTD验证,如果不存在DTD,则导致失败。如果只希望模式验证而不是DTD验证,请使用setValidating(false)。
您的错误说清楚了:
Caused by: org.xml.sax.SAXParseException: Document is invalid: no grammar found.
在本教程中,您将找到有关hibernateconf文件的所有必需信息。
要修复它,您将需要添加:
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
现在假设我们想要使用 Spark API 写一个独立的应用程序。我们将通过使用 Scala(用 SBT),Java(用 Maven) 和 Python 写一个简单的应用程序来学习。 我们用 Scala 创建一个非常简单的 Spark 应用程序。如此简单,事实上它的名字叫 SimpleApp.scala: /* SimpleApp.scala */ import org.apache.spark.S
问题内容: 我正在考虑开发由两部分组成的桌面应用程序: 用户界面(例如Java应用) 后端Node.js服务器 2个部分通过插座连接。不要问为什么我知道这很奇怪。 我将希望能够为客户提供带有安装程序的应用程序。我不希望用户必须自己安装Node.js。 有没有一种方法可以独立安装Node.js服务器,即无需在系统上全局安装Node.js。 对于任何(Windows,Linux,Mac OS X …)
问题内容: 我正在寻找在 独立的(桌面/秋千)* 应用程序中使用 Spring的 示例或教程,我进行了很多搜索,但找不到有用的东西,所有示例和教程均适用于Web应用程序,请告知。 * 问题答案: 使用maven创建独立应用程序,如下所示: 使用Maven创建独立的应用程序 将applicationContext放在类路径中,并按如下所示将其加载到主类中: 在此处查看全文: http://www.d
我正在开发一个使用Hibernate的简单JSF应用程序。我将所有必需的库导入WEB-INF/lib文件夹,并将它们指向类路径。但是当我尝试编译它时,我遇到了错误: 这是我创建SessionFactory并使用它的代码: 我在这里使用它: 那我做错了什么?我该怎么解决这个问题?
问题内容: 这是我的代码: 为什么不起作用?我懂了。在独立的应用程序中可以使用自动装配吗? 问题答案: Spring在独立应用程序中工作。您使用错误的方式来创建Spring bean。这样做的正确方法是: 在第一种情况下(问题中的那个),您将自己创建对象,而不是从Spring上下文中获取对象。因此,Spring没有机会获得依赖关系(这会导致)。 在第二种情况(此答案中的一种)中,您是从Spring