所有
在我们的"更高的"环境,我们不允许访问世界来获取资源。我们的JBoss应用程序使用JPA,我们的日志显示我们正在尝试从外部世界获取persistence_2_0.xsd,并且由于防火墙限制而失败。
如何教jboss拦截模式文件的请求,并提供本地管理的文件?
虽然我在持久性架构的上下文中提问,但我们使用的其他服务也有类似的问题。在某些情况下,架构包含其他外部资源,我们希望能够拦截后续调用以代替本地管理的资源。
例如,如果我们的XML文件之一有:
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
我如何拦截
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd
并提供
/opt/local/schemas/persistence_2_0.xsd
没有去外面的世界?
这是我们日志中的错误:
10.xx.xx.xxx, remoteHostname=10.xx.xx.xxx, remotePort=0, scheme=http, requestServerName=null, requestServerPort=0, headerFields=null, audit=null]] 2013-03-20 18:43:22,679 WARN [org.hibernate.ejb.packaging.PersistenceXmlLoader] [http-name%2F10.yyy.yy.yy-8080-1] [request_httpUniqueId=(null)] Warning parsing XML: XML InputStream(4) schema_reference.4: Failed to read schema document 'http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd', because 1) could not find the document; 2) the document could not be read; 3) the root element of the document is not <xsd:schema>.
答案 0 :(得分:0)
我希望您的JPA实现和您的JavaEE容器完全能够拥有自己的XSD本地版本并解决这些问题(因此切断任何远程访问)。例如,DataNucleus JPA只使用其中一个罐子中的XSD。