NiFi & Spark Integration Error: java.lang.NoClassDefFoundError: org/apache/http/nio/protocol/HttpAsyncResponseConsumer - spark-streaming

I am trying to setup a very basic example.
Push random data to Output port in NiFi
Use Spark streaming context to print received data.
Versions (All on single instance)
HDF - 3.1.1.0-35
HDP - 2.6.5.0-292
nifi-spark-receiver & site-to-site-client - 1.7.1
I have configured spark-defaults.conf as follows
spark.driver.extraClassPath /usr/hdf/3.1.1.0-35/nifi/work/META-INF/bundled-dependencies/nifi-client-dto-1.5.0.3.1.1.0-35.jar:/opt/spark-receiver/httpcore-nio-4.0-alpha6.jar:/opt/spark-receiver/nifi-site-to-site-client-1.5.0.3.1.2.0-7.jar:/opt/spark-receiver/nifi-spark-receiver-1.5.0.3.1.2.0-7.jar:/usr/hdf/3.1.1.0-35/nifi/lib/nifi-api-1.5.0.3.1.1.0-35.jar:/usr/hdf/3.1.1.0-35/nifi/lib/bootstrap/nifi-utils-1.5.0.3.1.1.0-35.jar:/usr/hdf/3.1.1.0-35/nifi/lib/nifi-framework-api-1.5.0.3.1.1.0-35.jar
I am running following commands in spark-shell
import org.apache.nifi._
import java.nio.charset._
import org.apache.nifi.spark._
import org.apache.nifi.remote.client._
import org.apache.spark._
import org.apache.nifi.events._
import org.apache.spark.streaming._
import org.apache.spark.streaming.StreamingContext._
import org.apache.nifi.remote._
import org.apache.nifi.remote.client._
import org.apache.nifi.remote.protocol._
import org.apache.spark.storage._
import org.apache.spark.streaming.receiver._
import java.io._
import org.apache.spark.serializer._
val conf = new SiteToSiteClient.Builder().url("http://10.140.0.2:9090/nifi").portName("toSpark").buildConfig()
val ssc = new StreamingContext(sc, Seconds(10))
val lines = ssc.receiverStream(new NiFiReceiver(conf, StorageLevel.MEMORY_ONLY))
val text = lines.map(dataPacket => new String(dataPacket.getContent, StandardCharsets.UTF_8))
text.print()
ssc.start()
After running this code, I get following error:
Exception in thread "NiFi Receiver" java.lang.NoClassDefFoundError:
org/apache/http/nio/protocol/HttpAsyncResponseConsumer
at org.apache.nifi.remote.client.SiteInfoProvider.createSiteToSiteRestApiClient(SiteInfoProvider.java:104)
at org.apache.nifi.remote.client.SiteInfoProvider.refreshRemoteInfo(SiteInfoProvider.java:68)
at org.apache.nifi.remote.client.SiteInfoProvider.getPortIdentifier(SiteInfoProvider.java:220)
at org.apache.nifi.remote.client.SiteInfoProvider.getOutputPortIdentifier(SiteInfoProvider.java:204)
at org.apache.nifi.remote.client.socket.SocketClient.getPortIdentifier(SocketClient.java:79)
at org.apache.nifi.remote.client.socket.SocketClient.createTransaction(SocketClient.java:121)
at org.apache.nifi.spark.NiFiReceiver$ReceiveRunnable.run(NiFiReceiver.java:149)
at java.lang.Thread.run(Thread.java:748) Caused by: java.lang.ClassNotFoundException:
org.apache.http.nio.protocol.HttpAsyncResponseConsumer
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
Pls help.

I'm guessing your inclusion of httpcore-nio-4.0-alpha6.jar is the issue, as that version doesn't have that class in it, which appears to be interfering with the version of httpcore-nio that is included transitively with the nifi-spark-receiver (currently version 4.4.6).

Related

NiFi: Using xml.etree.ElementTree in Python script

Nifi 1.5.0
I'm try execute this Python Script in ExecuteScript processor:
import java.io
from org.apache.commons.io import IOUtils
from java.nio.charset import StandardCharsets
from org.apache.nifi.processor.io import StreamCallback
import xml.etree.ElementTree as ET
class PyStreamCallback(StreamCallback):
def __init__(self):
pass
def process (self, inputStream, outputStream):
xmlRaw = IOUtils.toString(inputStream, StandardCharsets.UTF_8)
tree = ET.fromstring(xmlRaw)
root = tree.getroot()
xmlFix = ET.tostring(root, encoding='utf8', method='xml')
outputStream.write(bytearray(xmlFix))
flowFile = session.get()
if (flowFile != None):
#callback = PyStreamCallback(flowFile)
#session.read(flowFile, callback)
flowFile = session.write(flowFile, PyStreamCallback())
session.transfer(flowFile, REL_SUCCESS)
session.commit()
And I have error:
ExecuteScript[id=3c68eecc-0172-1000-ffff-ffff82be9cc3] Failed to process session due to javax.script.ScriptException: org.xml.sax.SAXException: org.xml.sax.SAXException: SAX2 driver class org.apache.xerces.parsers.SAXParser not found
java.lang.ClassNotFoundException: org.apache.xerces.parsers.SAXParser in <script> at line number 21: org.apache.nifi.processor.exception.ProcessException: javax.script.ScriptException: org.xml.sax.SAXException: org.xml.sax.SAXException: SAX2 driver class org.apache.xerces.parsers.SAXParser not found
java.lang.ClassNotFoundException: org.apache.xerces.parsers.SAXParser in <script> at line number 21
xml.etree.ElementTree not supported in Jython or it Nifi configuration error?
Spaxparser2 depricated in Nifi 1.5 https://community.cloudera.com/

Gradle Error in contextLoads under test

i am trying to build a web using Spring and Angular Js tegether w/ Gradle. my problem is When i run my project or build gradle this error comes out.
"contextLoads FAILED"
"What went Wrong:"
.> There were failing tests.: /build/reports/tests/test/index.html
Caused by:
org.springframework.beans.factory.UnsatisfiedDependencyException
Caused by:
org.springframework.beans.factory.NoSuchBeanDefinitionException
ContextLoad Leads me to this Class:
package com.linkedin.learning.linkedinlearningfullstackappangularspringboot;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
#RunWith(SpringRunner.class)
#SpringBootTest
public class LinkedInLearningFullStackAppAngularSpringBootApplicationTests {
#Test
public void contextLoads() {
}
}
heres the screenshot to make it clearer:
enter image description here

gatling jms-Nosuchmethoderror

I installed ActiveMQ in my local machine. I want to test it using Gatling. I created one simulation class to test my JMS. But I am getting error shown below.
Here is My Code:
import io.gatling.core.Predef._
import io.gatling.jms.Predef._
import scala.concurrent.duration._
import javax.jms._
import org.apache.activemq.ActiveMQConnectionFactory
class JmsTest extends Simulation{
val jmsConfig = jms
.connectionFactoryName("connectionFactory")
.url("tcp://localhost:61616")
.credentials("admin", "admin")
.contextFactory(classOf[org.apache.activemq.jndi.ActiveMQInitialContextFactory].getName)
.listenerCount(1)
val scn = scenario("JMS DSL test").repeat(1) {
exec(jms("req reply testing")
.reqreply
.queue("MyQueue")
.replyQueue("MyTopic")
.textMessage("Hello this is Naveen")
)
}
setUp(scn.inject(atOnceUsers(1)))
.protocols(jmsConfig)
}
I created jndi.properties file with following code.
java.naming.factory.initial = org.apache.activemq.jndi.ActiveMQInitialContextFactory
java.naming.provider.url = vm://localhost
connectionFactoryNames = connectionFactory
queue.MyQueue = TestJms1
topic.MyTopic = TestJms1
The error which I am getting is:
Exception in thread "main" java.lang.NoSuchMethodError: io.gatling.jms.Predef$.jms()Lio/gatling/jms/protocol/JmsProtocolBuilderBase$;
at computerdatabase.JmsTest.<init>(JmsTest.scala:14)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at java.lang.Class.newInstance(Class.java:442)
at io.gatling.app.Gatling$.io$gatling$app$Gatling$$$anonfun$1(Gatling.scala:41)
at io.gatling.app.Gatling.run(Gatling.scala:92)
at io.gatling.app.Gatling.runIfNecessary(Gatling.scala:75)
at io.gatling.app.Gatling.start(Gatling.scala:65)
at io.gatling.app.Gatling$.start(Gatling.scala:57)
at io.gatling.app.Gatling$.fromArgs(Gatling.scala:49)
at io.gatling.app.Gatling$.main(Gatling.scala:43)
at io.gatling.app.Gatling.main(Gatling.scala)

Issue while using hbase java client while puting data in database

I am testing the hbase . i am using a standalone one without hadoop. i used the version hbase 0.90.6 the code worked fine and i upgraded to latest version 0.94.0 it fails and gives this exception while i try to put datas in table.
Exception
Exception in thread "main" org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException: Failed 1 action: DoNotRetryIOException: 1 time, servers with issues: xxxx:36601,
at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.processBatchCallback(HConnectionManager.java:1591)
at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.processBatch(HConnectionManager.java:1367)
at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:945)
at org.apache.hadoop.hbase.client.HTable.doPut(HTable.java:801)
at org.apache.hadoop.hbase.client.HTable.put(HTable.java:776)
at com.hhase.Hbase.main(Hbase.java:22)
I am using the below code.
package com.hhase;
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.util.Bytes;
public class Hbase {
public static void main(String args[]) throws IOException {
Configuration hConf = HBaseConfiguration.create();
HTable table = new HTable(hConf, "myLittleHBaseTable");
Put p = new Put(Bytes.toBytes("myLittleRow"));
Put put = new Put(Bytes.toBytes("myLittleRow"));
put.add(Bytes.toBytes("myLittleFamily"),
Bytes.toBytes("someQualifier"), Bytes.toBytes("Some"));
table.put(put);
}
}
Library used
commons-cli-1.2.jar hadoop-core-1.0.2.jar
commons-codec-1.4.jar hbase-0.94.0.jar
commons-collections-3.2.1.jar httpclient-4.1.2.jar
commons-configuration-1.6.jar httpcore-4.1.4.jar
commons-httpclient-3.1.jar log4j-1.2.16.jar
commons-io-2.1.jar protobuf-java-2.4.0a.jar
commons-lang-2.5.jar slf4j-api-1.5.8.jar
commons-logging-1.1.1.jar slf4j-log4j12-1.5.8.jar
commons-net-1.4.1.jar stax-api-1.0.1.jar
guava-r09.jar zookeeper-3.4.3.jar
I encountered same error while inserting data into the HBase.
In my case, it was due to incorrect column family name.
Please refer to this conversation.

LifeCycle error - not implementing the correct interface javax.portlet.filter.PortletFilter

I started to update a wep application from Tomcat 6 to the current version of Tomcat (7-27). The problem arises when I start-up the server with the following error message:
ERROR LifeCycle - Cannot start object
org.gatein.pc.portlet.container.PortletInitializationException: Cannot create filter with class com.qnamic.railopt.web.security.portlet.PortletSecurityFilter because it does not implement the expected interface javax.portlet.filter.PortletFilter
at org.gatein.pc.portlet.impl.jsr168.ClassInstanceLifeCycle.create(ClassInstanceLifeCycle.java:85)
at org.gatein.pc.portlet.impl.jsr168.PortletFilterImpl.start(PortletFilterImpl.java:144)
at org.gatein.pc.portlet.impl.container.PortletFilterLifeCycle.invokeStart(PortletFilterLifeCycle.java:66)
at org.gatein.pc.portlet.impl.container.LifeCycle.managedStart(LifeCycle.java:93)
at org.gatein.pc.portlet.impl.container.PortletApplicationLifeCycle.startDependents(PortletApplicationLifeCycle.java:339)
at org.gatein.pc.portlet.impl.container.LifeCycle.managedStart(LifeCycle.java:129)
at org.gatein.pc.mc.PortletApplicationDeployment.install(PortletApplicationDeployment.java:153)
at org.gatein.pc.mc.PortletApplicationDeployer.add(PortletApplicationDeployer.java:216)
at org.gatein.pc.mc.PortletApplicationDeployer.onEvent(PortletApplicationDeployer.java:185)
at org.gatein.wci.impl.DefaultServletContainer.safeFireEvent(DefaultServletContainer.java:200)
at org.gatein.wci.impl.DefaultServletContainer.fireEvent(DefaultServletContainer.java:219)
at org.gatein.wci.impl.DefaultServletContainer.access$400(DefaultServletContainer.java:60)
at org.gatein.wci.impl.DefaultServletContainer$RegistrationImpl.registerWebApp(DefaultServletContainer.java:338)
at org.gatein.wci.tomcat.TC7ServletContainerContext.start(TC7ServletContainerContext.java:380)
at org.gatein.wci.tomcat.TC7ServletContainerContext.lifecycleEvent(TC7ServletContainerContext.java:234)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:401)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:168)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1566)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1556)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
A: S: R: U: ERROR LifeCycle - Cannot start object
org.gatein.pc.portlet.container.PortletInitializationException: Cannot create filter with class com.qnamic.railopt.web.core.portal.ContextFilter because it does not implement the expected interface javax.portlet.filter.PortletFilter
at org.gatein.pc.portlet.impl.jsr168.ClassInstanceLifeCycle.create(ClassInstanceLifeCycle.java:85)
at org.gatein.pc.portlet.impl.jsr168.PortletFilterImpl.start(PortletFilterImpl.java:144)
at org.gatein.pc.portlet.impl.container.PortletFilterLifeCycle.invokeStart(PortletFilterLifeCycle.java:66)
at org.gatein.pc.portlet.impl.container.LifeCycle.managedStart(LifeCycle.java:93)
at org.gatein.pc.portlet.impl.container.PortletApplicationLifeCycle.startDependents(PortletApplicationLifeCycle.java:339)
at org.gatein.pc.portlet.impl.container.LifeCycle.managedStart(LifeCycle.java:129)
at org.gatein.pc.mc.PortletApplicationDeployment.install(PortletApplicationDeployment.java:153)
at org.gatein.pc.mc.PortletApplicationDeployer.add(PortletApplicationDeployer.java:216)
at org.gatein.pc.mc.PortletApplicationDeployer.onEvent(PortletApplicationDeployer.java:185)
at org.gatein.wci.impl.DefaultServletContainer.safeFireEvent(DefaultServletContainer.java:200)
at org.gatein.wci.impl.DefaultServletContainer.fireEvent(DefaultServletContainer.java:219)
at org.gatein.wci.impl.DefaultServletContainer.access$400(DefaultServletContainer.java:60)
at org.gatein.wci.impl.DefaultServletContainer$RegistrationImpl.registerWebApp(DefaultServletContainer.java:338)
at org.gatein.wci.tomcat.TC7ServletContainerContext.start(TC7ServletContainerContext.java:380)
at org.gatein.wci.tomcat.TC7ServletContainerContext.lifecycleEvent(TC7ServletContainerContext.java:234)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:401)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:168)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1566)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1556)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
The class com.qnamic.railopt.web.security.portlet.PortletSecurityFilter does implement the interface javax.portlet.filter.PortletFilter:
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.security.Principal;
import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
import javax.portlet.EventRequest;
import javax.portlet.EventResponse;
import javax.portlet.PortletException;
import javax.portlet.PortletMode;
import javax.portlet.PortletRequest;
import javax.portlet.PortletResponse;
import javax.portlet.PortletSession;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;
import javax.portlet.ResourceRequest;
import javax.portlet.ResourceResponse;
import javax.portlet.filter.ActionFilter;
import javax.portlet.filter.EventFilter;
import javax.portlet.filter.FilterChain;
import javax.portlet.filter.FilterConfig;
import javax.portlet.filter.RenderFilter;
import javax.portlet.filter.ResourceFilter;
import org.apache.log4j.Logger;
import org.springframework.security.access.AccessDeniedException;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
public class PortletSecurityFilter implements ActionFilter, EventFilter, RenderFilter, ResourceFilter {
ActionFilter does implement javax.portlet.filter.PortletFilter
The dependent jars are:
primefaces-3.2.jar
spring-core-3.0.5.RELEASE.jar
spring-asm-3.0.5.RELEASE.jar
spring-context-3.0.5.RELEASE.jar
spring-aop-3.0.5.RELEASE.jar
spring-expression-3.0.5.RELEASE.jar
spring-webmvc-portlet-3.0.5.RELEASE.jar
spring-webmvc-3.0.5.RELEASE.jar
spring-context-support-3.0.5.RELEASE.jar
portlet-api-2.0.jar
Platform-3.8.0.jar
jdo-2.0.jar
kodo-runtime.jar
openjpa-1.0-fast.jar
PlanOpt-3.8.0.jar
RailOptBase-3.8.0.jar
portletfaces-bridge-api-2.0.0-RC1.jar
portletfaces-bridge-impl-2.0.0-RC1.jar
portletfaces-logging-1.1.0.jar
commons-collections-3.2.1.jar
spring-web-3.0.5.RELEASE.jar
aopalliance-1.0.jar
spring-beans-3.0.5.RELEASE.jar
spring-security-web-3.0.5.RELEASE.jar
spring-security-core-3.0.5.RELEASE.jar
spring-tx-3.0.3.RELEASE.jar
aspectjrt-1.6.8.jar
aspectjweaver-1.6.8.jar
spring-security-config-3.0.5.RELEASE.jar
log4j-1.2.15.jar
el-api-1.0.jar
slf4j-api-1.5.8.jar
servlet-api-2.5.jar
jstl-1.2.jar
commons-lang-2.5.jar
RailOptIntegration-3.8.0.jar
google-collections-1.0.jar
junit-4.8.2.jar
commons-io-2.0.1.jar
el-impl-2.2.jar
javax.faces-2.1.7.jar
Some dependencies have the scope "provided" and are not included in the war (as long tomcat doesn't use them)!
Part of my portlet.xml
<filter>
<filter-name>PortletSecurityFilter</filter-name>
<filter-class>com.qnamic.railopt.web.security.portlet.PortletSecurityFilter</filter- class>
<lifecycle>ACTION_PHASE</lifecycle>
<lifecycle>EVENT_PHASE</lifecycle>
<lifecycle>RENDER_PHASE</lifecycle>
<lifecycle>RESOURCE_PHASE</lifecycle>
<init-param>
<name>message</name>
<value>Security Filter</value>
</init-param>
</filter>
<filter-mapping>
<filter-name>PortletSecurityFilter</filter-name>
<portlet-name>*</portlet-name>
</filter-mapping>
The other dependencies are found in a parent project:
pc-api-2.2.0-GA.jar
pc-controller-2.2.0-GA.jar
pc-portlet-2.2.0-GA.jar
pc-mc-2.2.0-GA.jar
wci-wci-2.1.1-GA.jar
wci-tomcat7-2.1.1-GA.jar
When I debug the code in
org.gatein.pc.portlet.impl.jsr168.ClassInstanceLifeCycle.create(...)
it stops on the second line
Class clazz = classLoader.loadClass(className);
if (expectedClass.isAssignableFrom(clazz)) {
Class<? extends T> castedClass = clazz.asSubclass(expectedClass);
Constructor<? extends T> ctor = castedClass.getConstructor();
instance = ctor.newInstance();
}
else {
String msg = "Cannot create " + type + " with class " + className + " because it does not implement the expected interface " + expectedClass.getName();
throw new PortletInitializationException(msg);
}
My suggestion was first that there is a problem with the class loader but it shouldn't be, because the first line correctly loads the class PortletSecurityFilter. The expected class is javax.portlet.filter.PortletFilter as expected. Why the class is not assignable from?
I thank for any help!
I must admit that I have no idea what is the exact version of GateIn you used to meet this issue but anyway I could reproduce this issue with GateIn-3.2.0.Final-tomcat7 by simply keeping (on purpose) portlet-api-2.0.jar in the WEB-INF/lib directory of my war file. I could then get something like:
28 janv. 2013 15:48:09 org.gatein.common.logging.Logger log
GRAVE: Cannot start object
org.gatein.pc.portlet.container.PortletInitializationException: Cannot create filter with class org.exoplatform.tutorial.portlet.MyPortletFilter because it does not implement the expected interface javax.portlet.filter.PortletFilter
at org.gatein.pc.portlet.impl.jsr168.ClassInstanceLifeCycle.create(ClassInstanceLifeCycle.java:85)
at org.gatein.pc.portlet.impl.jsr168.PortletFilterImpl.start(PortletFilterImpl.java:144)
at org.gatein.pc.portlet.impl.container.PortletFilterLifeCycle.invokeStart(PortletFilterLifeCycle.java:66)
at org.gatein.pc.portlet.impl.container.LifeCycle.managedStart(LifeCycle.java:93)
at org.gatein.pc.portlet.impl.container.PortletApplicationLifeCycle.startDependents(PortletApplicationLifeCycle.java:339)
at org.gatein.pc.portlet.impl.container.LifeCycle.managedStart(LifeCycle.java:129)
at org.gatein.pc.portlet.impl.deployment.PortletApplicationDeployment.install(PortletApplicationDeployment.java:153)
at org.gatein.pc.portlet.impl.deployment.PortletApplicationDeployer.add(PortletApplicationDeployer.java:199)
at org.gatein.pc.portlet.impl.deployment.PortletApplicationDeployer.onEvent(PortletApplicationDeployer.java:168)
at org.gatein.wci.impl.DefaultServletContainer.safeFireEvent(DefaultServletContainer.java:200)
at org.gatein.wci.impl.DefaultServletContainer.addWebAppListener(DefaultServletContainer.java:166)
at org.gatein.pc.portlet.impl.deployment.PortletApplicationDeployer.start(PortletApplicationDeployer.java:241)
at org.exoplatform.portal.pc.ExoKernelIntegration.start(ExoKernelIntegration.java:178)
at sun.reflect.GeneratedMethodAccessor53.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.exoplatform.container.LifecycleVisitor.traverse(LifecycleVisitor.java:100)
at org.exoplatform.container.LifecycleVisitor.start(LifecycleVisitor.java:170)
at org.exoplatform.container.ConcurrentPicoContainer.start(ConcurrentPicoContainer.java:554)
at org.exoplatform.container.ExoContainer.start(ExoContainer.java:266)
at org.exoplatform.container.PortalContainer.start(PortalContainer.java:667)
at org.exoplatform.container.ExoContainer.start(ExoContainer.java:254)
at org.exoplatform.container.RootContainer.createPortalContainer(RootContainer.java:399)
at org.exoplatform.container.RootContainer.registerPortalContainer(RootContainer.java:266)
at org.exoplatform.portal.application.PortalController.afterInit(PortalController.java:114)
at org.exoplatform.container.web.AbstractHttpServlet.init(AbstractHttpServlet.java:79)
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1201)
I could fix it by simply removing portlet-api-2.0.jar from WEB-INF/lib of my webapp (or defining this dependency in maven as provided). This happens simply because the jar file is already in tomcat/lib so the Portlet Container refers to the class javax.portlet.filter.PortletFilter that has been loaded from the common ClassLoader of Tomcat and your Filter implements the class javax.portlet.filter.PortletFilter that has been loaded from the ClassLoader of your webapp (from WEB-INF/lib), even if the FQN of these 2 classes are equal, they are not considered as the same classes that is the reason why expectedClass.isAssignableFrom(clazz) returns false.

Resources