2012-04-10 3 views
11

Ich versuche gerade eine kleine Webapp zu erstellen, die Spring, Hibernate und Maven benutzt (läuft auf einem Tomcat) . Es funktioniert ganz gut, außer dass ich meine eingebettete Datenbank nicht funktionieren lassen kann. Ich hoffe ihr könnt mir helfen.Spring + Maven: Der passende Platzhalter ist strikt, aber für das Element 'jdbc: embedded-database' kann keine Deklaration gefunden werden

ich immer diesen Fehler bin vor, wenn ich die Webapp Tomcat bin bereitstellen:

Der passende Platzhalter ist streng, aber keine Erklärung für Element ‚jdbc: Embedded-Datenbank‘ zu finden

Während meiner Untersuchungen erfuhr ich, dass diese Nachricht auf fehlende Bibliotheken hinweist. Daher habe ich meine pom.xml hinzugefügt, wo ich das Artefakt spring-jdbc hinzugefügt habe.

Können Sie mir helfen, den Fehler zu finden? Danke vielmals!


Dies ist meine Feder-Konfiguration-Datei, die den Fehler bei der Initialisierung des Webapp verursacht:

<?xml version="1.0" encoding="UTF-8"?> 

<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:tx="http://www.springframework.org/schema/tx" 
    xmlns:jdbc="http://www.springframework.org/schema/jdbc/spring-jdbc-3.1.xsd" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
    http://www.springframework.org/schema/tx 
    http://www.springframework.org/schema/tx/spring-tx-3.0.xsd 
    http://www.springframework.org/schema/jdbc 
    http://www.springframework.org/schema/jdbc/spring-jdbc-3.1.xsd"> 
    <bean id="sessionFactory" class= 
    "org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 
     <property name="dataSource" ref="embeddedDatasource" /> 
     <property name="packagesToScan" value="org.rest" /> 
     <property name="hibernateProperties"> 
      <value> 
       hibernate.dialect=org.hibernate.dialect.MySQL5Dialect 
       hibernate.hbm2ddl.auto=update 
       hibernate.show_sql=false 
      </value> 
     </property> 
    </bean> 

    <jdbc:embedded-database id="embeddedDatasource" type="HSQL"/> 

    <bean id="txManager" class= 
     "org.springframework.orm.hibernate3.HibernateTransactionManager"> 
     <property name="sessionFactory" ref="sessionFactory" /> 
    </bean> 
    <tx:annotation-driven transaction-manager="txManager" /> 
</beans> 

Das ist mein pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.marcus</groupId> 
    <artifactId>maven-webapp-archetype</artifactId> 
    <packaging>war</packaging> 
    <version>0.0.1-SNAPSHOT</version> 
    <name>maven-webapp-archetype Maven Webapp</name> 
    <url>http://maven.apache.org</url> 
    <dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     <version>3.1.1.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>servlet-api</artifactId> 
     <version>3.0-alpha-1</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-orm</artifactId> 
     <version>3.1.1.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet.jsp.jstl</groupId> 
     <artifactId>javax.servlet.jsp.jstl-api</artifactId> 
     <version>1.2.1</version> 
    </dependency> 
    <dependency> 
     <groupId>jstl</groupId> 
     <artifactId>jstl</artifactId> 
     <version>1.2</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>3.6.10.Final</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-jdbc</artifactId> 
     <version>3.1.1.RELEASE</version> 
    </dependency> 
    </dependencies> 
    <build> 
    <finalName>maven-webapp-archetype</finalName> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.tomcat.maven</groupId> 
      <artifactId>tomcat6-maven-plugin</artifactId> 
      <version>2.0-beta-1</version> 
      <configuration> 
      <url>http://localhost:8080/manager/html</url> 
      <server>tomcat7</server> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.tomcat.maven</groupId> 
      <artifactId>tomcat7-maven-plugin</artifactId> 
      <version>2.0-beta-1</version> 
      <configuration> 
       <url>http://localhost:8080/manager/html</url> 
       <server>tomcat7</server> 
      </configuration> 
     </plugin> 
    </plugins> 
    </build> 
</project> 

Antwort

14

Diese Zeile in Ihre Spring-Kontextdatei:

xmlns:jdbc="http://www.springframework.org/schema/jdbc/spring-jdbc-3.1.xsd" 
xmlns:jdbc="http://www.springframework.org/schema/jdbc" 

nicht sicher, was IDE Sie verwenden, aber mit einigen (IntelliJ zum Beispiel) dies als Fehler markiert werden würde und eine Menge Kopfschmerzen sparen:sollte geändert werden!

+0

Dank hinzufügen! Das hat es behoben. Ich benutze Eclipse. Ich denke, ich muss mir mal anschauen, warum Eclipse es nicht als Fehler anzeigt. Dies ist meine erste Frage zu stackoverflow, also kann ich Ihre Antwort nicht stimmen? – mavilein

+0

Kein Problem :) Willkommen bei SO. Sie müssen Ihren Vertreter zu ** 15 ** bringen, um Antworten zu voten, sicher, dass Sie in kürzester Zeit da sein werden. – darrengorman

10

Für mich war es Xmlns hinzuzufügen: jdbc und xsi: schema

<beans .... 

    xmlns:jdbc="http://www.springframework.org/schema/jdbc" 

    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
    ..... 
    http://www.springframework.org/schema/jdbc 
    http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd" 
    default-lazy-init="true"> 

auch

+0

Ich stimme zu, das xsd muss in xsi: schemaLocation verwiesen werden, das Hinzufügen zu xmlns ist nicht genug. –

+0

Ich habe http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsd zu meinem schemaLocation hinzugefügt. Nützlich, wenn Sie nicht Version 3.0 verwenden. –

Verwandte Themen