spring - que - El comodín coincidente es estricto, pero no se puede encontrar una declaración para el elemento ''tx: annotation-driven''
el comodín coincidente es estricto pero no se ha encontrado ninguna declaración para el elemento (9)
¡Una barra diagonal (/) adicional frente a tx y el archivo * .xml me preocuparon durante 8 horas!
Mi error:
http://www.springframework.org/schema/tx/ http://www.springframework.org/schema/tx/spring-tx-4.3.xsd
Corrección:
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd
De hecho, un personaje menos / más logra mantener a los programadores ocupados durante horas.
Estoy intentando configurar JSF + Spring + hibernate y estoy intentando ejecutar una prueba, pero cuando uso este "tx: annotation-driven" en mi archivo de aplicación-contexto.xml, aparece este error:
El comodín coincidente es estricto, pero no se puede encontrar una declaración para el elemento ''tx: annotation-driven''
Aquí está mi aplicación-contexto.xml:
<?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:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.6.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.6.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.5.6.xsd
" xmlns:tool="http://www.springframework.org/schema/tool">
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="oracle.jdbc.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@192.168.56.101:1521:Gpsi"/>
<property name="username" value="omar"/>
<property name="password" value="omar"/>
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="annotatedClasses">
<list>
<value>om.mycompany.model.Course</value>
<value>om.mycompany.model.Student</value>
<value>om.mycompany.model.Teacher</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.OracleDialect</prop>
</props>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<tx:annotation-driven transaction.manager="transactionManager"/>
<context:annotation-config/>
<context:component-scan base.package="com.mmycompany"/>
</beans>
y aquí está mi CourseServiceImplTest. Todavía no he implementado las pruebas:
public class CourseServiceImplTest {
private static ClassPathXmlApplicationContext context;
private static CourseService courseService;
public CourseServiceImplTest() {
}
@BeforeClass
public static void setUpClass() throws Exception {
context=new ClassPathXmlApplicationContext("application-context.xml");
courseService=(CourseService) context.getBean("courseService");
}
@AfterClass
public static void tearDownClass() throws Exception {
context.close();
}
@Before
public void setUp() {
}
@After
public void tearDown() {
}
/**
* Test of getAllCourses method, of class CourseServiceImpl.
*/
@Test
public void testGetAllCourses() {
System.out.println("getAllCourses");
CourseServiceImpl instance = new CourseServiceImpl();
List expResult = null;
List result = instance.getAllCourses();
assertEquals(expResult, result);
// TODO review the generated test code and remove the default call to fail.
fail("The test case is a prototype.");
}
/**
* Test of getCourse method, of class CourseServiceImpl.
*/
@Test
public void testGetCourse() {
System.out.println("getCourse");
Integer id = null;
CourseServiceImpl instance = new CourseServiceImpl();
Course expResult = null;
Course result = instance.getCourse(id);
assertEquals(expResult, result);
// TODO review the generated test code and remove the default call to fail.
fail("The test case is a prototype.");
}
y aquí está el CourseServiceImpl:
@Service("courseService")
@Transactional
public class CourseServiceImpl implements CourseService{
@Autowired
private SessionFactory sessionFactory;
@Override
public List<Course> getAllCourses() {
return sessionFactory.getCurrentSession().createQuery("from Course").list();
}
@Override
public Course getCourse(Integer id) {
return (Course) sessionFactory.getCurrentSession().get(Course.class, id);
}
@Override
public void save(Course course) {
sessionFactory.getCurrentSession().saveOrUpdate(course);
}
}
Asegúrese de que tanto la versión Spring como la versión xsd sean iguales. En mi caso, estoy usando Spring 4.1.1, por lo que mi todo xsd debería ser la versión * -4.1.xsd
En mi caso, esto fue en realidad un síntoma del servidor, alojado en AWS, que carece de IP para la red externa. Intentaría descargar espacios de nombres desde springframework.org y no podría establecer una conexión.
Esto es para otros (como yo :)). No se olvide de agregar la dependencia de primavera tx jar / maven. También la configuración correcta en appctx es:
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd"
, por error configuración errónea que otros pueden tener
xmlns:tx="http://www.springframework.org/schema/tx/spring-tx-3.1.xsd"
es decir, extra "/spring-tx-3.1.xsd"
xsi:schemaLocation="http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd"
en otras palabras, lo que hay en xmlns (espacio de nombres) debe tener una asignación adecuada en schemaLocation (espacio de nombres vs esquema).
El espacio de nombres aquí es: http://www.springframework.org/schema/tx
Schema Doc del espacio de nombres es: http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
este esquema del espacio de nombres más adelante se asigna en el tarro para localizar la ruta de xsd real ubicada en org.springframework.transaction.config
Estoy aprendiendo de udemy. Seguí cada paso que mi instructor me enseñó a hacer. En la sección básica de mvc de primavera al configurar el entorno de desarrollo, tuve el mismo error para:
<mvc:annotation-driven/> and <tx:annotation-driven transaction-manager="myTransactionManager" />
entonces acabo de reemplazar
http://www.springframework.org/schema/mvc/spring-mvc.xsd
con
http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd
y
http://www.springframework.org/schema/tx/spring-tx.xsd
con
http://www.springframework.org/schema/tx/spring-tx-4.2.xsd
en realidad visité estos dos sitios http://www.springframework.org/schema/mvc/ y http://www.springframework.org/schema/tx/ y acabo de agregar la última versión de spring-mvc y spring-tx, es decir , spring-mvc-4.2.xsd y spring-tx-4.2.xsd
Por lo tanto, sugiero probar esto. Espero que esto ayude. Gracias.
FWIW tuve este mismo problema. Resultó que mis entradas xsi: schemaLocation eran incorrectas, así que fui a los documentos oficiales y pegué los suyos en los míos:
http://docs.spring.io/spring/docs/current/spring-framework-reference/html/transaction.html sección 16.5.6
Tuve que agregar un par más, pero eso estaba bien. Lo siguiente es descubrir por qué esto solucionó el problema ...
Para mí, lo que funcionó fue el orden en que se definieron los espacios de nombres en la etiqueta xsi: schemaLocation: [ya que la versión era buena y también era administrador de transacciones]
El error fue con:
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"
Y SE RESUELVE CON:
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"
Tienes algunos errores en tu appcontext.xml:
Utilice * -2.5.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/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"
Errores tipográficos en
tx:annotation-driven
ycontext:component-scan
(. En lugar de -)<tx:annotation-driven transaction-manager="transactionManager" /> <context:component-scan base-package="com.mmycompany" />
Any one can help for me!!!!!!!!!
<?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:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:lang="http://www.springframework.org/schema/lang"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop/ http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/context/ http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/jee/ http://www.springframework.org/schema/jee/spring-jee.xsd
http://www.springframework.org/schema/lang/ http://www.springframework.org/schema/lang/spring-lang.xsd
http://www.springframework.org/schema/tx/ http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/util/ http://www.springframework.org/schema/util/spring-util.xsd">
<context:annotation-config />(ERROR OCCUR)
<context:component-scan base-package="hiberrSpring" /> (ERROR OCCUR)
<bean id="jspViewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView"></property>
<property name="prefix" value="/WEB-INF/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
<bean id="messageSource"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="classpath:messages"></property>
<property name="defaultEncoding" value="UTF-8"></property>
</bean>
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
p:location="/WEB-INF/jdbc.properties"></bean>
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"
p:driverClassName="${com.mysql.jdbc.Driver}"
p:url="${jdbc:mysql://localhost/}" p:username="${root}"
p:password="${rajini}"></bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property>
<property name="configurationClass">
<value>org.hibernate.cfg.AnnotationConfiguration</value>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${org.hibernate.dialect.MySQLDialect}</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean>
<bean id="employeeDAO" class="hiberrSpring.EmployeeDaoImpl"></bean>
<bean id="employeeManager" class="hiberrSpring.EmployeeManagerImpl"></bean>
<tx:annotation-driven /> (ERROR OCCUR)
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
</beans>