2014-03-12 77 views
0

到目前为止,我有:Social Business Toolkit示例应用程序如何使用managed-beans.xml?

  • 安装和我的WebSphere Application 服务器,
  • 增加了一个URL资源的SBT属性文件启动sbt.sample-1.0.0.20140125-1133.ear

Social Business Toolkit示例应用运行良好,我可以连接到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> 



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

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

回答

1

我不会建议你考虑他们有关。 managed-beans.xml有一个名称,它只是一组配置对象。该项目本身不使用Java Server Faces。

+0

感谢您的快速回复! – magnetronnie

+1

我要求马克验证答案,所以如果有任何更新,他会添加一个答案 –

1

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

In a web application SBTFilter (HTTP servlet filter) is responsible for initializing the application using servlet context. Application does the initialization like loading the managed beans and properties factories.

示例应用程序是一个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);