【发布时间】:2017-04-28 12:28:31
【问题描述】:
我使用 Google App Engine 1.9.51。在 Eclipse 中,我为多服务创建了 4 个项目: - 一只耳朵(GoalsCompletion) - 一个常见的 jave 项目 (GoalsCompletion_common) - 2 个 Web 应用程序(GoalsCompletion_default 和GoalsComletion_task),如下面的屏幕截图所示。
在网络应用中(例如GoalsCompletion_default), - 我有几个 jsf 文件是指公共项目中定义的管理 bean(即GoalsCompletion_common)。 - 我也有jave文件引用common project中定义的接口。
我将公共项目作为 Web 应用部署的依赖项包括在内,如下所示:
我面临的问题是在 web 应用程序中,当我在公共项目中调用 getter 管理 bean 时,没有任何返回。
例如
在 web.xml 中
<context-param>
<param-name>primefaces.THEME</param-name>
<param-value>#{userSession.theme}</param-value>
在jsf页面中
Current Theme: #{userSession.theme}
如果我将 UserSession Manage bean 从公共项目移动到 Web 应用程序,则返回值。
GAE 没有抱怨找不到类,没有错误只是返回空值,所以我的部署配置似乎有问题。有什么帮助吗?
【问题讨论】:
-
解决方法是我将那些管理 bean 从公共项目添加到每个 Web 应用程序中的 faces-config.xml。它工作。所以看起来网络应用程序不会扫描其他项目生成的 jar 文件。不确定这是唯一的解决方案还是有更好的方法......
-
阅读“网络片段”...
-
您可以使用
EJB-s 访问其他应用程序中的托管bean。或JAX-RS. -
GAE 不支持 J2EE。而那个通用项目只是一个 java 项目,其中包含我计划由其他 2 个 Web 应用程序重用的代码。这就是为什么它被打包为 jar 文件并包含在其他 Web 应用程序项目中的原因。因此,无论我的应用服务器是否是 GAE,都无法与 EJB -s 或 JAX-RS 共享,因为它不是普通的 Web 应用。
-
您需要在 common 项目中拥有 faces-config.xml 才能扫描托管 bean。请看stackoverflow.com/questions/7663818/…
标签: eclipse google-app-engine jsf