在 JMH 应用程序中使用 Spring 个 Bean
Using Spring Beans in a JMH Application
我正在尝试在一个简单的 JMH 应用程序 (http://openjdk.java.net/projects/code-tools/jmh/) 中使用 spring 上下文,但是当 运行 和 benchmarks.jar 时,它似乎无法读取spring 模式文档,即使它在本地工作。
这是一个标准的 jmh 项目,从基本的 maven 原型建立。为了简单起见:
package org.sample;
import org.openjdk.jmh.annotations.Benchmark;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class BenchmarkTest {
public BenchmarkTest() {
ApplicationContext context = new ClassPathXmlApplicationContext("springContext.xml");
}
@Benchmark
public void benchmarkSomething() {
// BENCHMARKS
}
public static void main(String [] args) {
BenchmarkTest benchmarkTest = new BenchmarkTest();
benchmarkTest.benchmarkSomething();
}
}
//Spring 配置
<?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:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!-- spring beans -->
</beans>
当 运行 来自 main 时有 java -jar target/benchmarks.jar
没有错误,但是在构建 jmh uber jar 和 运行
之后
java -jar target/benchmarks.jar
我收到以下错误
org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 8 in XML document from class path resource [springContext.xml] is invalid; nested exception is org.xml.sax.SAXParseException; lineNumber: 8; columnNumber: 80; cvc-elt.1: Cannot find the declaration of element 'beans'.
有什么建议吗?
想通了:
将它添加到我的 maven 着色 jar 插件中修复了它。 H/Thttp://www.eorlovsky.com/2010/03/maven-shade-spring-core-handlers_27.html
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.handlers</resource>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.schemas</resource>
</transformer>
我正在尝试在一个简单的 JMH 应用程序 (http://openjdk.java.net/projects/code-tools/jmh/) 中使用 spring 上下文,但是当 运行 和 benchmarks.jar 时,它似乎无法读取spring 模式文档,即使它在本地工作。
这是一个标准的 jmh 项目,从基本的 maven 原型建立。为了简单起见:
package org.sample;
import org.openjdk.jmh.annotations.Benchmark;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class BenchmarkTest {
public BenchmarkTest() {
ApplicationContext context = new ClassPathXmlApplicationContext("springContext.xml");
}
@Benchmark
public void benchmarkSomething() {
// BENCHMARKS
}
public static void main(String [] args) {
BenchmarkTest benchmarkTest = new BenchmarkTest();
benchmarkTest.benchmarkSomething();
}
}
//Spring 配置
<?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:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!-- spring beans -->
</beans>
当 运行 来自 main 时有 java -jar target/benchmarks.jar 没有错误,但是在构建 jmh uber jar 和 运行
之后java -jar target/benchmarks.jar
我收到以下错误
org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 8 in XML document from class path resource [springContext.xml] is invalid; nested exception is org.xml.sax.SAXParseException; lineNumber: 8; columnNumber: 80; cvc-elt.1: Cannot find the declaration of element 'beans'.
有什么建议吗?
想通了:
将它添加到我的 maven 着色 jar 插件中修复了它。 H/Thttp://www.eorlovsky.com/2010/03/maven-shade-spring-core-handlers_27.html
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.handlers</resource>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.schemas</resource>
</transformer>