Social Business Toolkit Samples应用程序如何使用managed-beans.xml?

时间:2014-03-12 15:14:24

标签: jsf java-ee ibm-sbt faces-config

到目前为止,我有:

  • 在我的WebSphere Application上安装并启动sbt.sample-1.0.0.20140125-1133.ear 服务器,
  • 为SBT Properties文件添加了一个URL资源。

Social Business Toolkit Samples应用运行正常,我可以连接到IBM Connections并检索一些ActivityStream条目。

当我第一次加载应用程序时,我注意到了这个错误:

Exception stack trace: com.ibm.websphere.naming.CannotInstantiateObjectException: A NameNotFoundException occurred on an indirect lookup on the name java:comp/env/url/ibmsbt-managedbeansxml. The name java:comp/env/url/ibmsbt-managedbeansxml maps to a JNDI name in deployment descriptor bindings for the application performing the JNDI lookup. Make sure that the JNDI name mapping in the deployment descriptor binding is correct. If the JNDI name mapping is correct, make sure the target resource can be resolved with the specified name relative to the default initial context. 

在Samples应用程序的ibm-web-bnd.xml文件中,我找到了这一行:

<resource-ref name="url/ibmsbt-managedbeansxml" binding-name="url/ibmsbt-managedbeansxml" />

web.xml

<resource-ref>
    <description>Reference to a URL resource which points to the managed bean configuration for the Social Business Toolkit.</description>
    <res-ref-name>url/ibmsbt-managedbeansxml</res-ref-name>
    <res-type>java.net.URL</res-type>
    <res-auth>Container</res-auth>
    <res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref> 



我想知道,为什么首先应该有一个URL资源到JSF应用程序配置资源文件(managed-beans.xml)?根据Java EE文档,JavaServer Faces实现将在/WEB-INF/文件夹中查找它。

SBT是否在某处使用JavaServer Faces技术?或者我可以选择不在我自己的使用SBT的应用程序中使用managed-beans.xml文件吗?

2 个答案:

答案 0 :(得分:1)

我不建议你认为它们有关系。 managed-beans.xml有一个先前的名称,它只是一组配置对象。项目本身不使用Java Server Faces。

答案 1 :(得分:1)

我只是再次阅读文档,比第一次更仔细,我想我现在对第二个问题中的问题有了更好的理解。来自documentation

  

在Web应用程序中,SBTFilter(HTTP servlet过滤器)负责   用于使用servlet上下文初始化应用程序。应用   像加载托管bean和属性一样进行初始化   工厂。

示例应用是一个Web应用程序。我认为在我自己的应用程序中,我可以选择使用com.ibm.commons.runtime.impl.app.ApplicationStandalone而不是com.ibm.commons.runtime.impl.servlet.ApplicationServlet,然后以编程方式配置端点。或者根本不使用应用程序,如下所示:

RuntimeFactory runtimeFactory = new RuntimeFactoryStandalone();
Application application = runtimeFactory.initApplication(null);
Context.init(application, null, null);