我今天早上(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>
答案 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的帮助!