Hi All,
CONTEXT
The integration test example not works, because an infinite loop "Logger:
java.lang.reflect.InvocationTargetException" occurs. It not works in test
example of karaf clone or an own written unit-test.
TRIALS
- I tried security.manager with policy
- I tried add-opens
- I tried <useSystemClassLoader>false</useSystemClassLoader>
- I tried different logger settings with log4j. When I change
<dependency>
<groupId>org.ops4j.pax.logging</groupId>
<artifactId>pax-logging-log4j2</artifactId>
<version>${pax-logging.version}</version>
<scope>provided</scope>
</dependency>
to
<dependency>
<groupId>org.ops4j.pax.logging</groupId>
<artifactId>pax-logging-service</artifactId>
<version>1.11.17</version>
</dependency>
it seems that the security issue is occurring „later“, but also raises. Also
the infinity loop stays.
DESCRIPTION
I am not able to suppress the security manager on karaf integration test. Hoe
to fix that? What is the reason for the Exception which not ends? I configured
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven-surefire-plugin.version}</version>
<configuration>
<forkCount>1</forkCount>
<reuseForks>false</reuseForks>
<!-- <useSystemClassLoader>false</useSystemClassLoader> -->
<systemPropertyVariables>
<property>
<!-- Set property to java.system.property, so it could be
loaded to build karaf-test-instance -->
<name>karaf.version</name>
<value>${karaf.version}</value>
</property>
<property>
<!-- Set property to java.system.property, so it could be
loaded to build karaf-test-instance -->
<name>project.version</name>
<value>${project.version}</value>
</property>
</systemPropertyVariables>
<argLine>
<!---Dtests.security.manager=false-->
<!-- -Djava.security.manager
-Djava.security.policy=${basedir}/src/test/resources/java.policy -->
--add-opens java.base/java.security=ALL-UNNAMED
--add-opens java.base/java.net=ALL-UNNAMED
--add-opens java.base/java.lang=ALL-UNNAMED
--add-opens java.base/java.util=ALL-UNNAMED
--add-opens java.naming/javax.naming.spi=ALL-UNNAMED
--add-opens java.rmi/sun.rmi.transport.tcp=ALL-UNNAMED
</argLine>
</configuration>
</plugin>
But nothing seems to work. The error which is thrown looks like:
Running org.rogatio.k3.test.ExampleTest
WARNING: package org.apache.karaf.specs.locator not in java.base
Logger: java.lang.reflect.InvocationTargetException
Exception in thread "CM Configuration Updater"
java.lang.UnsupportedOperationException: getSubject is supported only if a
security manager is allowed
at java.base/javax.security.auth.Subject.getSubject(Subject.java:347)
at
org.apache.felix.eventadmin.impl.handler.EventAdminImpl.prepareEvent(EventAdminImpl.java:146)
at
org.apache.felix.eventadmin.impl.handler.EventAdminImpl.postEvent(EventAdminImpl.java:180)
at
org.apache.felix.eventadmin.impl.security.EventAdminSecurityDecorator.postEvent(EventAdminSecurityDecorator.java:79)
at
org.ops4j.pax.logging.spi.support.EventAdminTracker.deliver(EventAdminTracker.java:103)
at
org.ops4j.pax.logging.spi.support.EventAdminTracker.postEvent(EventAdminTracker.java:65)
at
org.ops4j.pax.logging.log4j2.internal.PaxLoggingServiceImpl.handleEvents(PaxLoggingServiceImpl.java:415)
at
org.ops4j.pax.logging.log4j2.internal.PaxLoggerImpl.doLog0(PaxLoggerImpl.java:1134)
at
org.ops4j.pax.logging.log4j2.internal.PaxLoggerImpl.doLog(PaxLoggerImpl.java:1099)
at
org.ops4j.pax.logging.log4j2.internal.PaxLoggerImpl.error(PaxLoggerImpl.java:583)
at
org.ops4j.pax.logging.log4j2.internal.PaxLoggingServiceImpl.logImpl(PaxLoggingServiceImpl.java:368)
at
org.ops4j.pax.logging.log4j2.internal.PaxLoggingServiceImpl.access$000(PaxLoggingServiceImpl.java:70)
at
org.ops4j.pax.logging.log4j2.internal.PaxLoggingServiceImpl$1ManagedPaxLoggingService.log(PaxLoggingServiceImpl.java:675)
at org.apache.felix.cm.impl.Log.log(Log.java:186)
at org.apache.felix.cm.impl.UpdateThread.run(UpdateThread.java:88)
at java.base/java.lang.Thread.run(Thread.java:1575)
Logger: java.lang.reflect.InvocationTargetException
Logger: java.lang.reflect.InvocationTargetException
Logger: java.lang.reflect.InvocationTargetException
Logger: java.lang.reflect.InvocationTargetException
Logger: java.lang.reflect.InvocationTargetException
...