如何消除我的GlassFish Java EE应用程序对Internet的依赖?

时间:2015-01-10 15:01:26

标签: java-ee glassfish

我今天早上(2015-01-10)发现,如果没有Internet连接,我无法在GlassFish 4.1中部署我的Java EE应用程序。当我尝试部署我的应用程序并收到以下错误时,我意识到了这一点:

- java.io.IOException: Error parsing descriptor Deployment descriptor file META-INF/glassfish-ejb-jar.xml in archive [elis-ejb-0.0.1-SNAPSHOT_jar].   
at com.sun.enterprise.deployment.io.DeploymentDescriptorFile.read(DeploymentDescriptorFile.java:361)   
at com.sun.enterprise.deployment.util.DOLUtils.readRuntimeDeploymentDescriptor(DOLUtils.java:512) 
- ...
- Caused by: java.io.IOException: Server returned HTTP response code: 503 for URL: http://www.oracle.com/splash/java.net/maintenance/index.html   
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1838)   
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1439)

显然,几个Oracle网站在今天早上08:30左右,我的GlassFish Java EE应用程序依赖于在应用程序部署期间解析glassfish-ejb-jar.xml文件。我注意到http://www.glassfish.org也导致了以下错误消息页面,直到我能够再次部署我的应用程序。

我目前正在开发该应用程序,因此我可以等待网站恢复,然后继续开发而不会造成太大的不便。但是,这个事件使我担心最终部署应用程序以运行我的公司,因为应用程序需要运行,并且最好在没有Internet连接的情况下进行部署。

如何识别应用程序的Internet依赖项?

如何消除应用程序的Internet依赖性?

以下是我的ejb-jar.xml。

<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                             http://xmlns.jcp.org/xml/ns/javaee/ejb-jar_3_2.xsd"
         version="3.2">
</ejb-jar>

以下是我的glassfish-ejb-jar.xml文件。

<!DOCTYPE glassfish-ejb-jar PUBLIC "-//GlassFish.org//
DTD GlassFish Application Server 3.1 EJB 3.1//EN"
"http://glassfish.org/dtds/glassfish-ejb-jar_3_1-1.dtd">
<glassfish-ejb-jar>
    <display-name>elis-ejb</display-name>
</glassfish-ejb-jar>

1 个答案:

答案 0 :(得分:2)

我在java.net论坛上找到了类似的hzhang_jn帖子,其中说明了以下内容:

  

在声明DOCTYPE时,您的glassfish-web.xml中可能有拼写错误.... DOCTYPE用于将声明的dtd解析为本地存储库   并验证。当DOCTYPE出错时,它会尝试上网   并获取dtd ...

我仔细比较了我的glassfish-ejb-jar.xml文件的DOCTYPE与GlassFish 4.0应用程序部署指南中列出的文件,它们完全相同。事实上,我有信心通过剪切和粘贴指南创建了我的glassfish-ejb-jar.xml文件。无论如何,在我将三行DOCTYPE更改为一行后,我能够部署我的应用程序而无需访问Internet。

没有Internet连接的DOCTYPE:

<!DOCTYPE glassfish-ejb-jar PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 EJB 3.1//EN" "http://glassfish.org/dtds/glassfish-ejb-jar_3_1-1.dtd">

需要互联网连接的DOCTYPE:

<!DOCTYPE glassfish-ejb-jar PUBLIC "-//GlassFish.org//
DTD GlassFish Application Server 3.1 EJB 3.1//EN"
"http://glassfish.org/dtds/glassfish-ejb-jar_3_1-1.dtd">

谢谢@unwichtich的帮助!