【问题标题】:WebLogic Virtual Directory Mapping Not WorkingWebLogic 虚拟目录映射不起作用
【发布时间】:2011-07-22 22:15:17
【问题描述】:

在我非常简单的 WebLogic 11g 应用程序中,我遇到了一个令人沮丧的虚拟目录映射问题。我安装了 WebLogic 11g OEPE,它安装了 WebLogic Server 10.35。我相信这是正确安装的,因为我能够部署一个运行良好的更复杂的应用程序......除了我的虚拟目录映射问题。

我想从 Web 应用程序之外的目录 H:\Backup 访问文件。

这是我的整个应用程序,这些是我的确切文件。

wl_test/index.html

<html>
<head><title>WebLogic Test</title></head>

<body>
<h1>This is another new test<br>
</body>
</html>

wl_test/WEB-INF/web.xml

<web-app>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>
</web-app>

wl_test/WEB-INF/weblogic.xml

<weblogic-web-app>
    <virtual-directory-mapping>
         <local-path>H:/Backup/</local-path>
         <url-pattern>/files/*</url-pattern>
         <url-pattern>*.txt</url-pattern>
    </virtual-directory-mapping>
</weblogic-web-app>


当我访问 HTML 文件“http://localhost:7002/wl_test/index.html”时,它加载得非常好。

但是,当我尝试加载以下两个 URL 中的任何一个时,它们都失败并出现 HTTP 404 错误。是的,这两个文件 one.ini 和 asdf.txt 都存在于 H:\Backup 目录中。

  1. 'http://localhost:7002/wl_test/files/one.ini'
  2. 'http://localhost:7002/wl_test/asdf.txt'

这个简单的设置可能有什么问题?

我开始认为我不明白这应该如何工作。

【问题讨论】:

  • 嗯...我在不同的系统上安装了一个服务器,当然它工作得很好。然后我从我的开发工作站删除服务器并重新安装它,现在也可以工作了。我现在应该删除这个问题吗?

标签: weblogic


【解决方案1】:

我想我了解发生了什么变化以及如何解决所有问题。

虚拟目录映射有两个问题。

首先,local-path 不能是 MS-DOS SUBSTed 驱动器。我不明白为什么,但 WebLogic 不喜欢它。

其次,当 url-pattern 包含一个文件夹时,例如 /files/*,该文件夹必须存在于 local-path目录。

这两个都允许在从中移植的 JRun 服务器中。

叹息, 兰迪·施泰格鲍尔

【讨论】:

  • 对不起。我不明白这个问题。
  • 我希望这个本地路径是动态的,我需要从我的 java 代码中更改本地路径
  • 哦。我不知道该怎么做,或者是否有可能。您的意思是从一个 HTTP 请求到下一个请求是动态的吗?我会考虑从操作系统本身内部执行此操作的方法,可能是通过重命名文件夹或更改符号链接。如果可能的话。还可以考虑创建一个新的 Stack Overflow 问题,以便其他人看到。
  • 在查看docs.oracle.com/cd/E13222_01/wls/docs81/webapp/… 之后我解决了这个问题。如果本地路径是 H:/Backup/ 并且 url 模式是 /files/*,那么你应该在 Backup 中创建一个“文件”文件夹,Weblogic 会在那里查找文件。
  • nMoncho 谢谢!你是我今天的英雄。您的研究帮助我解决了同样的问题。
【解决方案2】:

我认为多个 url-pattern 元素的组合有些愚蠢。这是一个示例,显示了我存档中的共享 404 文件。

NotFoundWeb.war/WEB-INF/web.xml 的一部分如下所示:

<error-page>
<error-code>404</error-code>
<location>/error/404.html</location>
</error-page>

NotFoundWeb.war/WEB-INF/weblogic.xml 的一部分如下所示:

<wls:virtual-directory-mapping>
<wls:local-path>d:\temp\notfound</wls:local-path>
<wls:url-pattern>*.html</wls:url-pattern>
</wls:virtual-directory-mapping>

我在文件系统上有一个文件: d:\temp\notfound\error\404.html

所以在运行时,当我键入以下内容时: http://localhost:7001/NotFoundWeb/somebadurl

我从文件系统中得到错误页面。

【讨论】:

    【解决方案3】:

    generatedReports 和 /app/reports 是文件系统中的本地文件夹。这样,您可以将任何类型的文件放入生成的 Reports 文件夹中:

    <!DOCTYPE weblogic-web-app PUBLIC "-//BEA Systems, Inc.//DTD Web Application 8.1//EN" "http://www.bea.com/servers/wls810/dtd/weblogic810-web-jar.dtd">
        
    <weblogic-web-app>
        <container-descriptor>
            <index-directory-enabled>true</index-directory-enabled>
        </container-descriptor>
        <virtual-directory-mapping>
             <local-path>/app/reports</local-path>
             <url-pattern>/generatedReports/*</url-pattern>
        </virtual-directory-mapping>
    </weblogic-web-app>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-13
      • 2012-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-08
      相关资源
      最近更新 更多