2013-11-22 27 views
5

我想在WebSphere 8.5.5部署应用程序 我已经创建了一个共享库包含myfaces 2.2 jar和其他依赖项(如commons-collections)的Websphere。
我还将我的应用程序的类加载器作为PARENT_LAST。
当我部署应用程序,我得到这个异常:抛出:IllegalArgumentException:com.ibm.ws.jsf.config.annotation.WASMyFacesAnnotationProvider没有org.apache.myfaces.spi.AnnotationProvider

An error occured while initializing MyFaces: Class com.ibm.ws.jsf.config.annotation.WASMyFacesAnnotationProvider is no org.apache.myfaces.spi.AnnotationProvider 
java.lang.IllegalArgumentException: Class com.ibm.ws.jsf.config.annotation.WASMyFacesAnnotationProvider is no org.apache.myfaces.spi.AnnotationProvider 
at org.apache.myfaces.shared.util.ClassUtils.buildApplicationObject(ClassUtils.java:557) 
at org.apache.myfaces.shared.util.ClassUtils.buildApplicationObject(ClassUtils.java:524) 
+0

上述程序适用于Mojarra 2.2。我正在使用仅包含以下内容的共享库:jsf-api-2.2.4和jsf-impl-2.2.4 –

+0

您如何附加共享库?你是否将它附加到服务器实例或应用程序? – Isaac

+0

环境/共享库/新建 –

回答

1

我一直在寻找上运行MyFaces的较新版本是8.5.5,并且碰到了类似的问题。这似乎是IBM为支持MyFaces的嵌入式版本而编写的代码与应用程序或共享库提供的MyFaces之间的冲突。

IBM提供了一种解决此问题的方法。当WAS 8.0发布时,它提供了一个功能,允许选择“SunRI1.2”或“MyFaces”作为服务器提供的JSF。将默认值设置为“SunRI1.2”将从类路径中删除服务器提供的MyFaces,并允许开发人员提供它们自己的。

  1. 选择的任何应用程序
  2. 点击JSP和JSF选项
  3. JSF实现部分,更改下拉到SunRI1.2
  4. 点击OK
  5. 保存配置并重启服务器
+0

有没有在部署描述符中设置它的方法?所以我们不需要在事后改变它?并有可能恢复? – VeenarM

+0

虽然它通过应用程序设置公开,但它实际上存在于服务器级别。同一服务器上的每个应用程序都会受到影响。 – rdean400

+0

Yup后来想到了:)哦,好的,我们正在请求我们自己的JVM进行生产 - 如果我们强迫他们使用它自己并反向装载器,那么人们可能会感到不安,因为我们是:) – VeenarM