在WebSphere Liberty上运行Jython应用程序

时间:2013-08-28 23:53:51

标签: java websphere jython mod-wsgi websphere-liberty

我希望在IBM WAS 8.5 Liberty Profile上运行jython / modjy(modjy类似于mod_wsgi,除了它桥接java Web服务器和应用程序)。

然而,当我将jython-modjy示例应用程序转换为.WAR文件并将其放入dropins目录时,WebSphere服务器确实很难找到demo_app.py(WSGI处理程序)的路径。这是我的web.xml文件的片段:

<init-param>
  <param-name>python.home</param-name>
  <param-value>C:/jython2.5.3</param-value>
</init-param>
<init-param>
  <param-name>app_filename</param-name>
  <param-value>demo_app.py</param-value>
</init-param>

唯一与app相关的其他参数是app_directory和app_callable_name,默认为当前目录和处理程序:

尝试运行应用时出现以下错误:

modjy.modjy_exceptions.ApplicationNotFound: Application filename not found: None/demo_app.py

我使用它的唯一方法是指定绝对路径,这实际上不太便于移植

非常感谢任何帮助

谢谢大卫

1 个答案:

答案 0 :(得分:0)

我自己做了一个快速测试,我和bkail提出了同样的担忧。这个问题很可能是Liberty不夸大已部署的Web应用程序的行为的结果。因此,依赖getRealPath()的所有应用程序都将失败。

有两种可能的选项/解决方法:

  1. 在开发环境中,您可以将Eclipse与WebSphere Application Server Liberty Profile Tools一起使用,以将Dynamic Web Module项目添加到Liberty服务器实例。这将在Liberty和工作区中的项目文件之间创建一个链接。 Servlet Context的getRealPath()方法将在此设置中起作用。

  2. 将Liberty服务器的dropins目录中的WAR文件扩展到一个目录,该目录被称为WAR文件 - 包括文件扩展名.war。同样的方法应该适用于在server.xml

  3. 中指定您的应用程序