配置jboss以避免外部模式提取

时间:2013-03-21 16:17:52

标签: java xml jpa jboss

所有

在我们的"更高的"环境,我们不允许访问世界来获取资源。我们的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>.

1 个答案:

答案 0 :(得分:0)

我希望您的JPA实现和您的JavaEE容器完全能够拥有自己的XSD本地版本并解决这些问题(因此切断任何远程访问)。例如,DataNucleus JPA只使用其中一个罐子中的XSD。