目前我有:
- 在我的WebSphere应用程序上安装并启动了
sbt.sample-1.0.0.20140125-1133.ear
服务器, - 为SBT属性文件添加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.
在示例应用程序的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>
我想知道,为什么JSF应用程序配置资源文件(managed-beans.xml
)首先应该有一个URL资源?根据Java EE文档,JavaServer Faces实现将在/WEB-INF/
文件夹中查找它。
SBT是否在某处使用JavaServer Faces技术?或者我可以在使用SBT的应用程序中选择不使用managed-beans.xml
文件吗?
我不建议您认为它们是相关的。xml有一个先前的名称,它只是一组配置对象。项目本身不使用Java Server Faces。
我刚刚又读了一遍文档,比第一次更仔细,我想我现在对我在第二个问题中提出的问题有了更好的理解。来自文档:
在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);