Java 无法访问jboss 7.1.1中资源的数据流
我正在使用smooks api进行java xml和xml java转换。此代码在jboss4.2.2中工作,但要迁移jboss7.1.1,得到的异常是“无法访问资源的数据流” 示例代码:Java 无法访问jboss 7.1.1中资源的数据流,java,jboss7.x,smooks,Java,Jboss7.x,Smooks,我正在使用smooks api进行java xml和xml java转换。此代码在jboss4.2.2中工作,但要迁移jboss7.1.1,得到的异常是“无法访问资源的数据流” 示例代码: private String runSmooksTransform(Object inputJavaObject) throws IOException, SAXException { Smooks smooks = new Smooks("/WEB-INF/smo
private String runSmooksTransform(Object inputJavaObject)
throws IOException, SAXException {
Smooks smooks = new Smooks("/WEB-INF/smooks-config.xml");
try {
ExecutionContext executionContext = smooks.createExecutionContext();
StringWriter writer = new StringWriter();
smooks.filterSource(executionContext,
new org.milyn.payload.JavaSource(inputJavaObject),
new StreamResult(writer));
return writer.toString();
} finally {
smooks.close();
}
}
smooks-config.xml
<?xml version="1.0"?>
<smooks-resource-list xmlns="http://www.milyn.org/xsd/smooks-1.0.xsd" >
<resource-config selector="global-parameters">
<param name="stream.filter.type">SAX</param>
</resource-config>
</smooks-resource-list>
萨克斯
module.xml
<module xmlns="urn:jboss:module:1.1" name="org.milyn">
<resources>
<resource-root path="milyn-smooks-all-1.4.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="org.apache.commons.logging" />
<module name="org.jaxen" />
<module name="org.hibernate" slot="3" />
</dependencies>
</module>
例外情况:
java.io.IOException: Failed to access data stream for resource [/WEB-INF/smooks-config.xml]. Tried (in order):
10:10:14,113 ERROR [stderr] (http-localhost-127.0.0.1-8080-2) File System: E:\WEB-INF\smooks-config.xml
10:10:14,114 ERROR [stderr] (http-localhost-127.0.0.1-8080-2) File System: E:\jboss-as-7.1.1.Final\bin\WEB-INF\smooks-config.xml
10:10:14,117 ERROR [stderr] (http-localhost-127.0.0.1-8080-2) Classpath: /WEB-INF/smooks-config.xml
10:10:14,125 ERROR [stderr] (http-localhost-127.0.0.1-8080-2)
10:10:14,126 ERROR [stderr] (http-localhost-127.0.0.1-8080-2) at org.milyn.resource.URIResourceLocator.getResource(URIResourceLocator.java:130)
10:10:14,128 ERROR [stderr] (http-localhost-127.0.0.1-8080-2) at org.milyn.resource.URIResourceLocator.getResource(URIResourceLocator.java:84)
10:10:14,129 ERROR [stderr] (http-localhost-127.0.0.1-8080-2) at org.milyn.Smooks.addConfigurations(Smooks.java:307)
10:10:14,131 ERROR [stderr] (http-localhost-127.0.0.1-8080-2) at org.milyn.Smooks.<init>(Smooks.java:151)
10:10:14,133 ERROR [stderr] (http-localhost-127.0.0.1-8080-2) at com.manam.mobee.customer.MobeeCustomerHome.runSmooksTransform(MobeeCustomerHome.java:644)
java.io.IOException:无法访问资源[/WEB-INF/smooks config.xml]的数据流。试过(按顺序):
10:10:14113错误[stderr](http-localhost-127.0.0.1-8080-2)文件系统:E:\WEB-INF\smooks-config.xml
10:10:14114错误[stderr](http-localhost-127.0.0.1-8080-2)文件系统:E:\jboss-as-7.1.1.Final\bin\WEB-INF\smooks-config.xml
10:10:14117错误[stderr](http-localhost-127.0.0.1-8080-2)类路径:/WEB-INF/smooks-config.xml
10:10:14125错误[stderr](http-localhost-127.0.0.1-8080-2)
10:10:14126 org.milyn.resource.URIResourceLocator.getResource(URIResourceLocator.java:130)上的错误[stderr](http-localhost-127.0.0.1-8080-2)
10:10:14128 org.milyn.resource.URIResourceLocator.getResource(URIResourceLocator.java:84)上的错误[stderr](http-localhost-127.0.0.1-8080-2)
10:10:14129 org.milyn.Smooks.addConfigurations(Smooks.java:307)上的错误[stderr](http-localhost-127.0.0.1-8080-2)
10:10:14131 org.milyn.Smooks上的错误[stderr](http-localhost-127.0.0.1-8080-2)(Smooks.java:151)
10:10:14133错误[stderr](http-localhost-127.0.0.1-8080-2)位于com.manam.mobee.customer.MobeeCustomerHome.runSmooksTransform(MobeeCustomerHome.java:644)
我对smooks知之甚少,但我猜它是在使用它的类加载器尝试在发送它的路径上查找资源。由于模块中有Smook,因此它使用自己的ModuleClassLoader
,无法查看用于部署的类加载器中的内容。最好使用java.io.InputStream
构造函数
如果您是从一个servlet运行这个,那么您可以使用
javax.servlet.ServerContext.getResourceAsStream(“WEB-INF/smokes config.xml”)
我对smooks知之甚少,但我猜它是在使用它的类加载器尝试在发送它的路径上查找资源。由于模块中有Smook,因此它使用自己的ModuleClassLoader
,无法查看用于部署的类加载器中的内容。最好使用java.io.InputStream
构造函数
如果您是从一个servlet运行此程序,那么可以使用
javax.servlet.ServerContext.getResourceAsStream(“WEB-INF/smokes config.xml”)
您需要更改此部分中的相对路径:Smooks-Smooks=new-Smooks(“/WEB-INF/Smooks-config.xml”)
到绝对路径:)您需要更改此部分中的相对路径:Smooks-Smooks=new-Smooks(“/WEB-INF/Smooks-config.xml”)
到绝对路径:)在Smooks-Smooks-Smooks-Smooks=new-Smooks(resourceURI);它加载访问路径。因为他们使用InpuStream。是的,但我认为您需要提供InputStream。很可能模块(org.milyn)正在使用Thread.currentThread().getContextClassLoader().getResourceAsStream()
,这将不起作用。默认情况下,smooks接受此路径E:\jboss-as-7.1.1.Final\bin\WEB-INF\smooks-config.xml,我应该如何更改/WEB-INF/smooks-config.xml的运行时路径?我尝试过smooks.getClassLoader().getResourceAsStream(“/WEB-INF/smooks config.xml”);获取空值不起作用。由于smooks config.xml
位于部署类路径上,因此需要从部署类加载器获取配置文件。smooks模块类加载器将无法在部署类路径上找到配置文件;它加载访问路径。因为他们使用InpuStream。是的,但我认为您需要提供InputStream。很可能模块(org.milyn)正在使用Thread.currentThread().getContextClassLoader().getResourceAsStream()
,这将不起作用。默认情况下,smooks接受此路径E:\jboss-as-7.1.1.Final\bin\WEB-INF\smooks-config.xml,我应该如何更改/WEB-INF/smooks-config.xml的运行时路径?我尝试过smooks.getClassLoader().getResourceAsStream(“/WEB-INF/smooks config.xml”);获取空值不起作用。由于smooks config.xml
位于部署类路径上,因此需要从部署类加载器获取配置文件。smooks模块类加载器将无法在部署类路径上找到配置文件。