2012-04-10 13 views
11

tôi hiện đang cố gắng xây dựng một webapp nhỏ sử dụng Spring, Hibernate và Maven (chạy trên tomcat) . Nó hoạt động khá tốt, ngoại trừ việc tôi không thể làm cho cơ sở dữ liệu nhúng của tôi hoạt động. Tôi hy vọng bạn có thể giúp tôi.Spring + Maven: Ký tự đại diện phù hợp là nghiêm ngặt, nhưng không có khai báo nào cho phần tử 'jdbc: embedded-database'

Tôi luôn luôn phải đối mặt với lỗi này, khi tôi đang triển khai các ứng dụng web với Tomcat:

Các ký tự đại diện phù hợp là nghiêm ngặt, nhưng không có tuyên bố có thể được tìm thấy cho yếu tố 'jdbc: nhúng-cơ sở dữ liệu'

Trong quá trình điều tra của tôi, tôi biết được rằng thư này đang hướng tới thư viện bị thiếu. Vì vậy, tôi đã thêm pom.xml của mình, trong đó tôi đã thêm phần tử tạo-spring-jdbc.

Bạn có thể giúp tôi tìm lỗi không? Cảm ơn rất nhiều!


Đây là mùa xuân-cấu hình file của tôi, mà gây ra lỗi trong quá trình khởi của webapp:

<?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> 

Đây là pom.xml của tôi:

<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> 

Trả lời

14

dòng trong này tệp ngữ cảnh mùa xuân của bạn:

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

nên được thay đổi:

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

Không chắc gì IDE bạn đang sử dụng nhưng với một số (IntelliJ ví dụ) này sẽ được đánh dấu là một lỗi và tiết kiệm rất nhiều nhức đầu!

+0

Cảm ơn! Điều đó đã sửa nó. Tôi đang sử dụng nhật thực. Hãy suy nghĩ tôi đã có một cái nhìn vào nó tại sao nhật thực không hiển thị nó như là một lỗi. Đây là câu hỏi đầu tiên của tôi về stackoverflow, vì vậy tôi không thể bỏ phiếu cho câu trả lời của bạn? – mavilein

+0

Không vấn đề gì :) Chào mừng bạn đến với SO. Bạn sẽ cần phải nhận được đại diện của bạn để ** 15 ** để bỏ phiếu cho câu trả lời, chắc chắn bạn sẽ ở đó trong thời gian không. – darrengorman

10

Đối với tôi đó là để thêm xmlns: jdbc và xsi: schemaLocation

<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"> 

cũng thêm

+0

Tôi đồng ý, xsd cần được tham chiếu trong xsi: schemaLocation, thêm nó vào xmlns là không đủ. –

+0

Tôi đã thêm http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsd vào schemaLocation của tôi. Hữu ích nếu bạn không sử dụng phiên bản 3.0. –

Các vấn đề liên quan