You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@karaf.apache.org by Frank 'S Jegers <Fr...@ikan.be> on 2021/05/05 13:49:20 UTC

Can't start karaf using the wrapper on AIX 7.2

Hi,

I'm trying to start karaf using the wrapper script on AIX 7.2.
Generated the wrapper files by executing :
karaf/bin/shell wrapper:install -n almagent59 -d "IKAN\ ALM\ 5.9\ Agent" -D "IKAN\ ALM\ 5.9\ Agent\ Daemon"

Then created a link to the sysV script in /etc/rc.d/init.d/
sudo ln -s /opt/ikan/almagent59/daemons/agent/karaf/bin/almagent59-service /etc/rc.d/init.d/

When I run it with "sudo /etc/rc.d/init.d/almagent59-service start", I get the output :
Starting IKAN ALM 5.9 Agent...

and then nothing : no Java process, no wrapper.log, no lock file, no karaf.pid file

In karaf/etc/almagent59-wrapper.conf, I set "wrapper.console.loglevel=DEBUG"
Then I get the additional output :
wrapper  | Working directory set to: /opt/ikan/almagent59/daemons/agent/karaf
wrapper  | Spawning intermediate process...

I edited the almagent59-service, and echoed the command that gets executed, which is :
/opt/ikan/almagent59/daemons/agent/karaf/bin/almagent59-wrapper /opt/ikan/almagent59/daemons/agent/karaf/etc/almagent59-wrapper.conf wrapper.syslog.ident=almagent59 wrapper.pidfile=/opt/ikan/almagent59/daemons/agent/karaf/almagent59.wrapper.pid wrapper.daemonize=TRUE

When I launch Karaf using karaf/bin/karaf, then Karaf starts ok and our application seems to function.

I've followed similar steps as above to launch karaf using the wrapper script on several Debian and Redhat based Linuxes, using both the sysV script and the systemd unit file, and managed to get it working there. But not so on AIX.

Any ideas ?

Karaf version : 4.2.8

Java version :
openjdk version "11.0.11" 2021-04-20
OpenJDK Runtime Environment AdoptOpenJDK-11.0.11+9 (build 11.0.11+9)
OpenJDK 64-Bit Server VM AdoptOpenJDK-11.0.11+9 (build 11.0.11+9, mixed mode)

AIX version : AIX 7.2 7200-03-02-1846

Thank you,
Frank 'S Jegers

Re: Can't start karaf using the wrapper on AIX 7.2

Posted by Jean-Baptiste Onofre <jb...@nanthrax.net>.
Hi,

Definitely patch-module are required, my point is to use "regular" java command line instead of JDK_JAVA_OPTIONS.
As the wrapper won’t "parse" regular java command line, I guess it should work (I have to check the syntax though).

+1 to add some details in KARAF-6439.

Thanks !
Regards
JB

> Le 6 mai 2021 à 16:29, Frank 'S Jegers <Fr...@ikan.be> a écrit :
> 
> Hi,
>  
> It may work without the --patch-module options, but I assume those options were added for a reason ?
>  
> It works if in karaf-wrapper.conf the option set.JDK_JAVA_OPTIONS= is removed. I added the arguments as JVM Parameters, like this :
> wrapper.java.additional.1=--add-reads=java.xml=java.logging
> wrapper.java.additional.2=--add-exports=java.base/org.apache.karaf.specs.locator=java.xml,ALL-UNNAMED
> wrapper.java.additional.3=--patch-module=java.base=lib/endorsed/org.apache.karaf.specs.locator-%KARAF_VERSION%.jar
> wrapper.java.additional.4=--patch-module=java.xml=lib/endorsed/org.apache.karaf.specs.java.xml-%KARAF_VERSION%.jar
> wrapper.java.additional.5=--add-opens=java.base/java.security=ALL-UNNAMED
> wrapper.java.additional.6=--add-opens=java.base/java.net <http://java.net/>=ALL-UNNAMED
> wrapper.java.additional.7=--add-opens=java.base/java.lang=ALL-UNNAMED
> wrapper.java.additional.8=--add-opens=java.base/java.util=ALL-UNNAMED
> wrapper.java.additional.9=--add-opens=java.naming/javax.naming.spi=ALL-UNNAMED
> wrapper.java.additional.10=--add-opens=java.rmi/sun.rmi.transport.tcp=ALL-UNNAMED
> wrapper.java.additional.11=--add-exports=java.base/sun.net.www.protocol.file=ALL-UNNAMED
> wrapper.java.additional.12=--add-exports=java.base/sun.net.www.protocol.ftp=ALL-UNNAMED
> wrapper.java.additional.13=--add-exports=java.base/sun.net.www.protocol.http=ALL-UNNAMED
> wrapper.java.additional.14=--add-exports=java.base/sun.net.www.protocol.https=ALL-UNNAMED
> wrapper.java.additional.15=--add-exports=java.base/sun.net.www.protocol.jar=ALL-UNNAMED
> wrapper.java.additional.16=--add-exports=java.base/sun.net.www.content.text=ALL-UNNAMED
> wrapper.java.additional.17=--add-exports=jdk.xml.dom/org.w3c.dom.html=ALL-UNNAMED
> wrapper.java.additional.18=--add-exports=jdk.naming.rmi/com.sun.jndi.url.rmi=ALL-UNNAMED
>  
> wrapper.java.additional.19=-Dkaraf.instances=%KARAF_HOME%/instances
> wrapper.java.additional.20=-Dkaraf.home=%KARAF_HOME%
> wrapper.java.additional.21=-Dkaraf.base=%KARAF_BASE%
> wrapper.java.additional.22=-Dkaraf.data=%KARAF_DATA%
> wrapper.java.additional.23=-Dkaraf.etc=%KARAF_ETC%
> wrapper.java.additional.24=-Dkaraf.log=%KARAF_LOG%
> wrapper.java.additional.25=-Dkaraf.restart.jvm.supported=true
> wrapper.java.additional.26=-Djava.io.tmpdir=%KARAF_DATA%/tmp
> wrapper.java.additional.27=-Djava.util.logging.config.file=%KARAF_ETC%/java.util.logging.properties
> wrapper.java.additional.28=-Dcom.sun.management.jmxremote
> wrapper.java.additional.29=-Dkaraf.startLocalConsole=false
> wrapper.java.additional.30=-Dkaraf.startRemoteShell=true
>  
> Note that you can't set
> wrapper.java.additional.3=--patch-module java.base=lib/endorsed/org.apache.karaf.specs.locator-%KARAF_VERSION%.jar
> So with a space between patch-module and java.base, because the wrapper will treat the entire value as 1 argument.
> Nor can you set
> wrapper.java.additional.3=--patch-module
> wrapper.java.additional.4=java.base=lib/endorsed/org.apache.karaf.specs.locator-%KARAF_VERSION%.jar
> Because then the jvm will complain that the option "java.base" is invalid
>  
> You must replace the space with a "=" :
> wrapper.java.additional.3=--patch-module=java.base=lib/endorsed/org.apache.karaf.specs.locator-%KARAF_VERSION%.jar
>  
> I filed a bug report in the AdoptOpenJDK Github : https://github.com/adoptium/adoptium-support/issues/303 <https://github.com/adoptium/adoptium-support/issues/303>
> We'll see if anyone picks this up.
>  
> Do you want me to add this information to the KARAF-6439 issue ?
>  
> Regards,
> Frank ‘S Jegers
>  
> From: Jean-Baptiste Onofre [mailto:jb@nanthrax.net] 
> Sent: donderdag 6 mei 2021 6:16
> To: user
> Subject: Re: Can't start karaf using the wrapper on AIX 7.2
>  
> Hi,
>  
> I agree: it seems the patch-module option is not "AIX compliant" ;)
>  
> Does it work without patch module option ?
>  
> Regards
> JB
> 
> 
> Le 5 mai 2021 à 21:11, Frank 'S Jegers <Frank.Sjegers@ikan.be <ma...@ikan.be>> a écrit :
>  
> Hi,
>  
> I tried with a freshly downloaded Karaf 4.2.11, generated the wrapper files by executing :
> export JAVA_HOME=/opt/ikan/java/jdk-11.0.11+9
> karaf/bin/shell wrapper:install
>  
> Also tried starting Karaf first, then, from the karaf console, did a
> feature install wrapper
> and
> wrapper:install
>  
> The JAVA_HOME is set in the karaf-wrapper.conf :
> set.default.JAVA_HOME=/opt/ikan/java/jdk-11.0.11+9
>  
> But it still wouldn't start. Turns out there was a wrapper.log after all (wasn't looking in the right place).
>  
> This is the relevant content :
>  
> ERROR  | wrapper  | 2021/05/05 19:21:12 | JVM exited while loading the application.
> INFO   | jvm 5    | 2021/05/05 19:21:12 | NOTE: Picked up JDK_JAVA_OPTIONS: --add-reads=java.xml=java.logging --add-exports=java.base/org.apache.karaf.specs.locator=java.xml,ALL-UNNAMED --patch-module java.base=lib/endorsed/org.apache.karaf.specs.locator-4.2.11.jar --patch-module java.xml=lib/endorsed/org.apache.karaf.specs.java.xml-4.2.11.jar --add-opens java.base/java.security=ALL-UNNAMED --add-opens java.base/java.net <http://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 --add-exports=java.base/sun.net.www.protocol.file=ALL-UNNAMED --add-exports=java.base/sun.net.www.protocol.ftp=ALL-UNNAMED --add-exports=java.base/sun.net.www.protocol.http=ALL-UNNAMED --add-exports=java.base/sun.net.www.protocol.https=ALL-UNNAMED --add-exports=java.base/sun.net.www.protocol.jar=ALL-UNNAMED --add-exports=java.base/sun.net.www.content.text=ALL-UNNAMED --add-exports=jdk.xml.dom/org.w3c.dom.html=ALL-UNNAMED --add-exports=jdk.naming.rmi/com.sun.jndi.url.rmi=ALL-UNNAMED
> INFO   | jvm 5    | 2021/05/05 19:21:12 | NOTE: Picked up JDK_JAVA_OPTIONS: --add-reads=java.xml=java.logging --add-exports=java.base/org.apache.karaf.specs.locator=java.xml,ALL-UNNAMED --patch-module java.base=lib/endorsed/org.apache.karaf.specs.locator-4.2.11.jar --patch-module java.xml=lib/endorsed/org.apache.karaf.specs.java.xml-4.2.11.jar --add-opens java.base/java.security=ALL-UNNAMED --add-opens java.base/java.net <http://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 --add-exports=java.base/sun.net.www.protocol.file=ALL-UNNAMED --add-exports=java.base/sun.net.www.protocol.ftp=ALL-UNNAMED --add-exports=java.base/sun.net.www.protocol.http=ALL-UNNAMED --add-exports=java.base/sun.net.www.protocol.https=ALL-UNNAMED --add-exports=java.base/sun.net.www.protocol.jar=ALL-UNNAMED --add-exports=java.base/sun.net.www.content.text=ALL-UNNAMED --add-exports=jdk.xml.dom/org.w3c.dom.html=ALL-UNNAMED --add-exports=jdk.naming.rmi/com.sun.jndi.url.rmi=ALL-UNNAMED
> INFO   | jvm 5    | 2021/05/05 19:21:12 | Error occurred during initialization of VM
> INFO   | jvm 5    | 2021/05/05 19:21:12 | Cannot specify java.base more than once to --patch-module
>  
> It looks like I'm experiencing issue KARAF-6439 (https://issues.apache.org/jira/browse/KARAF-6439 <https://issues.apache.org/jira/browse/KARAF-6439> )
>  
> After some testing it appears that this problem is caused by the handling of the OpenJDK Java versions for AIX of the JDK_JAVA_OPTIONS environment variable :
> If you set
> export JDK_JAVA_OPTIONS="--patch-module java.base=dummy.jar"
> and then run any Java class, like :
> java Dummy
> it will fail to launch a JVM, complaining that "java.base specified more than once to --patch-module"
>  
> I tested with AdoptOpenJDK-11.0.11+9 (both Hotspot and OpenJ9) and with IBM jdk 11 (Eclipse OpenJ9 VM 11.0.10.0-IBM (build openj9-0.24.0, JRE 11 AIX ppc64-64-Bit Compressed References 20210202_3 (JIT enabled, AOT enabled)). All produce similar errors for this case.
>  
> I didn't find an Oracle Java for the AIX platform, nor a compatible jdk from Amazon Coretto or Azul Zulu.
>  
> The only option I see for the moment is removing the use of the JDK_JAVA_OPTIONS environment variable, and putting all those options as wrapper.java.additional.xx JVM parameters. I'll test that, unless anyone has any better ideas ?
>  
> Any input greatly appreciated.
>  
> Grtz,
> Frank 'S Jegers.
>  
> From: Jean-Baptiste Onofre [mailto:jb@nanthrax.net <ma...@nanthrax.net>] 
> Sent: woensdag 5 mei 2021 16:09
> To: user
> Subject: Re: Can't start karaf using the wrapper on AIX 7.2
>  
> Hi Frank
>  
> Did you try to install wrapper once karaf is started ?
> Do you have the JDK define in wrapper.conf ?
>  
> Regards
> JB
> 
> 
> 
> Le 5 mai 2021 à 15:49, Frank 'S Jegers <Frank.Sjegers@ikan.be <ma...@ikan.be>> a écrit :
>  
> Hi,
>  
> I'm trying to start karaf using the wrapper script on AIX 7.2.
> Generated the wrapper files by executing :
> karaf/bin/shell wrapper:install -n almagent59 -d "IKAN\ ALM\ 5.9\ Agent" -D "IKAN\ ALM\ 5.9\ Agent\ Daemon"
>  
> Then created a link to the sysV script in /etc/rc.d/init.d/
> sudo ln -s /opt/ikan/almagent59/daemons/agent/karaf/bin/almagent59-service /etc/rc.d/init.d/
>  
> When I run it with "sudo /etc/rc.d/init.d/almagent59-service start", I get the output :
> Starting IKAN ALM 5.9 Agent...
>  
> and then nothing : no Java process, no wrapper.log, no lock file, no karaf.pid file
>  
> In karaf/etc/almagent59-wrapper.conf, I set "wrapper.console.loglevel=DEBUG"
> Then I get the additional output :
> wrapper  | Working directory set to: /opt/ikan/almagent59/daemons/agent/karaf
> wrapper  | Spawning intermediate process...
>  
> I edited the almagent59-service, and echoed the command that gets executed, which is :
> /opt/ikan/almagent59/daemons/agent/karaf/bin/almagent59-wrapper /opt/ikan/almagent59/daemons/agent/karaf/etc/almagent59-wrapper.conf wrapper.syslog.ident=almagent59 wrapper.pidfile=/opt/ikan/almagent59/daemons/agent/karaf/almagent59.wrapper.pid wrapper.daemonize=TRUE
>  
> When I launch Karaf using karaf/bin/karaf, then Karaf starts ok and our application seems to function.
>  
> I've followed similar steps as above to launch karaf using the wrapper script on several Debian and Redhat based Linuxes, using both the sysV script and the systemd unit file, and managed to get it working there. But not so on AIX.
>  
> Any ideas ?
>  
> Karaf version : 4.2.8
>  
> Java version : 
> openjdk version "11.0.11" 2021-04-20
> OpenJDK Runtime Environment AdoptOpenJDK-11.0.11+9 (build 11.0.11+9)
> OpenJDK 64-Bit Server VM AdoptOpenJDK-11.0.11+9 (build 11.0.11+9, mixed mode)
>  
> AIX version : AIX 7.2 7200-03-02-1846
>  
> Thank you,
> Frank 'S Jegers


RE: Can't start karaf using the wrapper on AIX 7.2

Posted by Frank 'S Jegers <Fr...@ikan.be>.
Hi,

It may work without the --patch-module options, but I assume those options were added for a reason ?

It works if in karaf-wrapper.conf the option set.JDK_JAVA_OPTIONS= is removed. I added the arguments as JVM Parameters, like this :
wrapper.java.additional.1=--add-reads=java.xml=java.logging
wrapper.java.additional.2=--add-exports=java.base/org.apache.karaf.specs.locator=java.xml,ALL-UNNAMED
wrapper.java.additional.3=--patch-module=java.base=lib/endorsed/org.apache.karaf.specs.locator-%KARAF_VERSION%.jar
wrapper.java.additional.4=--patch-module=java.xml=lib/endorsed/org.apache.karaf.specs.java.xml-%KARAF_VERSION%.jar
wrapper.java.additional.5=--add-opens=java.base/java.security=ALL-UNNAMED
wrapper.java.additional.6=--add-opens=java.base/java.net=ALL-UNNAMED
wrapper.java.additional.7=--add-opens=java.base/java.lang=ALL-UNNAMED
wrapper.java.additional.8=--add-opens=java.base/java.util=ALL-UNNAMED
wrapper.java.additional.9=--add-opens=java.naming/javax.naming.spi=ALL-UNNAMED
wrapper.java.additional.10=--add-opens=java.rmi/sun.rmi.transport.tcp=ALL-UNNAMED
wrapper.java.additional.11=--add-exports=java.base/sun.net.www.protocol.file=ALL-UNNAMED
wrapper.java.additional.12=--add-exports=java.base/sun.net.www.protocol.ftp=ALL-UNNAMED
wrapper.java.additional.13=--add-exports=java.base/sun.net.www.protocol.http=ALL-UNNAMED
wrapper.java.additional.14=--add-exports=java.base/sun.net.www.protocol.https=ALL-UNNAMED
wrapper.java.additional.15=--add-exports=java.base/sun.net.www.protocol.jar=ALL-UNNAMED
wrapper.java.additional.16=--add-exports=java.base/sun.net.www.content.text=ALL-UNNAMED
wrapper.java.additional.17=--add-exports=jdk.xml.dom/org.w3c.dom.html=ALL-UNNAMED
wrapper.java.additional.18=--add-exports=jdk.naming.rmi/com.sun.jndi.url.rmi=ALL-UNNAMED

wrapper.java.additional.19=-Dkaraf.instances=%KARAF_HOME%/instances
wrapper.java.additional.20=-Dkaraf.home=%KARAF_HOME%
wrapper.java.additional.21=-Dkaraf.base=%KARAF_BASE%
wrapper.java.additional.22=-Dkaraf.data=%KARAF_DATA%
wrapper.java.additional.23=-Dkaraf.etc=%KARAF_ETC%
wrapper.java.additional.24=-Dkaraf.log=%KARAF_LOG%
wrapper.java.additional.25=-Dkaraf.restart.jvm.supported=true
wrapper.java.additional.26=-Djava.io.tmpdir=%KARAF_DATA%/tmp
wrapper.java.additional.27=-Djava.util.logging.config.file=%KARAF_ETC%/java.util.logging.properties
wrapper.java.additional.28=-Dcom.sun.management.jmxremote
wrapper.java.additional.29=-Dkaraf.startLocalConsole=false
wrapper.java.additional.30=-Dkaraf.startRemoteShell=true

Note that you can't set
wrapper.java.additional.3=--patch-module java.base=lib/endorsed/org.apache.karaf.specs.locator-%KARAF_VERSION%.jar
So with a space between patch-module and java.base, because the wrapper will treat the entire value as 1 argument.
Nor can you set
wrapper.java.additional.3=--patch-module
wrapper.java.additional.4=java.base=lib/endorsed/org.apache.karaf.specs.locator-%KARAF_VERSION%.jar
Because then the jvm will complain that the option "java.base" is invalid

You must replace the space with a "=" :
wrapper.java.additional.3=--patch-module=java.base=lib/endorsed/org.apache.karaf.specs.locator-%KARAF_VERSION%.jar

I filed a bug report in the AdoptOpenJDK Github : https://github.com/adoptium/adoptium-support/issues/303
We'll see if anyone picks this up.

Do you want me to add this information to the KARAF-6439 issue ?

Regards,
Frank ‘S Jegers

From: Jean-Baptiste Onofre [mailto:jb@nanthrax.net]
Sent: donderdag 6 mei 2021 6:16
To: user
Subject: Re: Can't start karaf using the wrapper on AIX 7.2

Hi,

I agree: it seems the patch-module option is not "AIX compliant" ;)

Does it work without patch module option ?

Regards
JB


Le 5 mai 2021 à 21:11, Frank 'S Jegers <Fr...@ikan.be>> a écrit :

Hi,

I tried with a freshly downloaded Karaf 4.2.11, generated the wrapper files by executing :
export JAVA_HOME=/opt/ikan/java/jdk-11.0.11+9
karaf/bin/shell wrapper:install

Also tried starting Karaf first, then, from the karaf console, did a
feature install wrapper
and
wrapper:install

The JAVA_HOME is set in the karaf-wrapper.conf :
set.default.JAVA_HOME=/opt/ikan/java/jdk-11.0.11+9

But it still wouldn't start. Turns out there was a wrapper.log after all (wasn't looking in the right place).

This is the relevant content :

ERROR  | wrapper  | 2021/05/05 19:21:12 | JVM exited while loading the application.
INFO   | jvm 5    | 2021/05/05 19:21:12 | NOTE: Picked up JDK_JAVA_OPTIONS: --add-reads=java.xml=java.logging --add-exports=java.base/org.apache.karaf.specs.locator=java.xml,ALL-UNNAMED --patch-module java.base=lib/endorsed/org.apache.karaf.specs.locator-4.2.11.jar --patch-module java.xml=lib/endorsed/org.apache.karaf.specs.java.xml-4.2.11.jar --add-opens java.base/java.security=ALL-UNNAMED --add-opens java.base/java.net<http://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 --add-exports=java.base/sun.net.www.protocol.file=ALL-UNNAMED --add-exports=java.base/sun.net.www.protocol.ftp=ALL-UNNAMED --add-exports=java.base/sun.net.www.protocol.http=ALL-UNNAMED --add-exports=java.base/sun.net.www.protocol.https=ALL-UNNAMED --add-exports=java.base/sun.net.www.protocol.jar=ALL-UNNAMED --add-exports=java.base/sun.net.www.content.text=ALL-UNNAMED --add-exports=jdk.xml.dom/org.w3c.dom.html=ALL-UNNAMED --add-exports=jdk.naming.rmi/com.sun.jndi.url.rmi=ALL-UNNAMED
INFO   | jvm 5    | 2021/05/05 19:21:12 | NOTE: Picked up JDK_JAVA_OPTIONS: --add-reads=java.xml=java.logging --add-exports=java.base/org.apache.karaf.specs.locator=java.xml,ALL-UNNAMED --patch-module java.base=lib/endorsed/org.apache.karaf.specs.locator-4.2.11.jar --patch-module java.xml=lib/endorsed/org.apache.karaf.specs.java.xml-4.2.11.jar --add-opens java.base/java.security=ALL-UNNAMED --add-opens java.base/java.net<http://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 --add-exports=java.base/sun.net.www.protocol.file=ALL-UNNAMED --add-exports=java.base/sun.net.www.protocol.ftp=ALL-UNNAMED --add-exports=java.base/sun.net.www.protocol.http=ALL-UNNAMED --add-exports=java.base/sun.net.www.protocol.https=ALL-UNNAMED --add-exports=java.base/sun.net.www.protocol.jar=ALL-UNNAMED --add-exports=java.base/sun.net.www.content.text=ALL-UNNAMED --add-exports=jdk.xml.dom/org.w3c.dom.html=ALL-UNNAMED --add-exports=jdk.naming.rmi/com.sun.jndi.url.rmi=ALL-UNNAMED
INFO   | jvm 5    | 2021/05/05 19:21:12 | Error occurred during initialization of VM
INFO   | jvm 5    | 2021/05/05 19:21:12 | Cannot specify java.base more than once to --patch-module

It looks like I'm experiencing issue KARAF-6439 (https://issues.apache.org/jira/browse/KARAF-6439 )

After some testing it appears that this problem is caused by the handling of the OpenJDK Java versions for AIX of the JDK_JAVA_OPTIONS environment variable :
If you set
export JDK_JAVA_OPTIONS="--patch-module java.base=dummy.jar"
and then run any Java class, like :
java Dummy
it will fail to launch a JVM, complaining that "java.base specified more than once to --patch-module"

I tested with AdoptOpenJDK-11.0.11+9 (both Hotspot and OpenJ9) and with IBM jdk 11 (Eclipse OpenJ9 VM 11.0.10.0-IBM (build openj9-0.24.0, JRE 11 AIX ppc64-64-Bit Compressed References 20210202_3 (JIT enabled, AOT enabled)). All produce similar errors for this case.

I didn't find an Oracle Java for the AIX platform, nor a compatible jdk from Amazon Coretto or Azul Zulu.

The only option I see for the moment is removing the use of the JDK_JAVA_OPTIONS environment variable, and putting all those options as wrapper.java.additional.xx JVM parameters. I'll test that, unless anyone has any better ideas ?

Any input greatly appreciated.

Grtz,
Frank 'S Jegers.

From: Jean-Baptiste Onofre [mailto:jb@nanthrax.net]
Sent: woensdag 5 mei 2021 16:09
To: user
Subject: Re: Can't start karaf using the wrapper on AIX 7.2

Hi Frank

Did you try to install wrapper once karaf is started ?
Do you have the JDK define in wrapper.conf ?

Regards
JB



Le 5 mai 2021 à 15:49, Frank 'S Jegers <Fr...@ikan.be>> a écrit :

Hi,

I'm trying to start karaf using the wrapper script on AIX 7.2.
Generated the wrapper files by executing :
karaf/bin/shell wrapper:install -n almagent59 -d "IKAN\ ALM\ 5.9\ Agent" -D "IKAN\ ALM\ 5.9\ Agent\ Daemon"

Then created a link to the sysV script in /etc/rc.d/init.d/
sudo ln -s /opt/ikan/almagent59/daemons/agent/karaf/bin/almagent59-service /etc/rc.d/init.d/

When I run it with "sudo /etc/rc.d/init.d/almagent59-service start", I get the output :
Starting IKAN ALM 5.9 Agent...

and then nothing : no Java process, no wrapper.log, no lock file, no karaf.pid file

In karaf/etc/almagent59-wrapper.conf, I set "wrapper.console.loglevel=DEBUG"
Then I get the additional output :
wrapper  | Working directory set to: /opt/ikan/almagent59/daemons/agent/karaf
wrapper  | Spawning intermediate process...

I edited the almagent59-service, and echoed the command that gets executed, which is :
/opt/ikan/almagent59/daemons/agent/karaf/bin/almagent59-wrapper /opt/ikan/almagent59/daemons/agent/karaf/etc/almagent59-wrapper.conf wrapper.syslog.ident=almagent59 wrapper.pidfile=/opt/ikan/almagent59/daemons/agent/karaf/almagent59.wrapper.pid wrapper.daemonize=TRUE

When I launch Karaf using karaf/bin/karaf, then Karaf starts ok and our application seems to function.

I've followed similar steps as above to launch karaf using the wrapper script on several Debian and Redhat based Linuxes, using both the sysV script and the systemd unit file, and managed to get it working there. But not so on AIX.

Any ideas ?

Karaf version : 4.2.8

Java version :
openjdk version "11.0.11" 2021-04-20
OpenJDK Runtime Environment AdoptOpenJDK-11.0.11+9 (build 11.0.11+9)
OpenJDK 64-Bit Server VM AdoptOpenJDK-11.0.11+9 (build 11.0.11+9, mixed mode)

AIX version : AIX 7.2 7200-03-02-1846

Thank you,
Frank 'S Jegers


Re: Can't start karaf using the wrapper on AIX 7.2

Posted by Jean-Baptiste Onofre <jb...@nanthrax.net>.
Hi,

I agree: it seems the patch-module option is not "AIX compliant" ;)

Does it work without patch module option ?

Regards
JB

> Le 5 mai 2021 à 21:11, Frank 'S Jegers <Fr...@ikan.be> a écrit :
> 
> Hi,
>  
> I tried with a freshly downloaded Karaf 4.2.11, generated the wrapper files by executing :
> export JAVA_HOME=/opt/ikan/java/jdk-11.0.11+9
> karaf/bin/shell wrapper:install
>  
> Also tried starting Karaf first, then, from the karaf console, did a
> feature install wrapper
> and
> wrapper:install
>  
> The JAVA_HOME is set in the karaf-wrapper.conf :
> set.default.JAVA_HOME=/opt/ikan/java/jdk-11.0.11+9
>  
> But it still wouldn't start. Turns out there was a wrapper.log after all (wasn't looking in the right place).
>  
> This is the relevant content :
>  
> ERROR  | wrapper  | 2021/05/05 19:21:12 | JVM exited while loading the application.
> INFO   | jvm 5    | 2021/05/05 19:21:12 | NOTE: Picked up JDK_JAVA_OPTIONS: --add-reads=java.xml=java.logging --add-exports=java.base/org.apache.karaf.specs.locator=java.xml,ALL-UNNAMED --patch-module java.base=lib/endorsed/org.apache.karaf.specs.locator-4.2.11.jar --patch-module java.xml=lib/endorsed/org.apache.karaf.specs.java.xml-4.2.11.jar --add-opens java.base/java.security=ALL-UNNAMED --add-opens java.base/java.net <http://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 --add-exports=java.base/sun.net.www.protocol.file=ALL-UNNAMED --add-exports=java.base/sun.net.www.protocol.ftp=ALL-UNNAMED --add-exports=java.base/sun.net.www.protocol.http=ALL-UNNAMED --add-exports=java.base/sun.net.www.protocol.https=ALL-UNNAMED --add-exports=java.base/sun.net.www.protocol.jar=ALL-UNNAMED --add-exports=java.base/sun.net.www.content.text=ALL-UNNAMED --add-exports=jdk.xml.dom/org.w3c.dom.html=ALL-UNNAMED --add-exports=jdk.naming.rmi/com.sun.jndi.url.rmi=ALL-UNNAMED
> INFO   | jvm 5    | 2021/05/05 19:21:12 | NOTE: Picked up JDK_JAVA_OPTIONS: --add-reads=java.xml=java.logging --add-exports=java.base/org.apache.karaf.specs.locator=java.xml,ALL-UNNAMED --patch-module java.base=lib/endorsed/org.apache.karaf.specs.locator-4.2.11.jar --patch-module java.xml=lib/endorsed/org.apache.karaf.specs.java.xml-4.2.11.jar --add-opens java.base/java.security=ALL-UNNAMED --add-opens java.base/java.net <http://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 --add-exports=java.base/sun.net.www.protocol.file=ALL-UNNAMED --add-exports=java.base/sun.net.www.protocol.ftp=ALL-UNNAMED --add-exports=java.base/sun.net.www.protocol.http=ALL-UNNAMED --add-exports=java.base/sun.net.www.protocol.https=ALL-UNNAMED --add-exports=java.base/sun.net.www.protocol.jar=ALL-UNNAMED --add-exports=java.base/sun.net.www.content.text=ALL-UNNAMED --add-exports=jdk.xml.dom/org.w3c.dom.html=ALL-UNNAMED --add-exports=jdk.naming.rmi/com.sun.jndi.url.rmi=ALL-UNNAMED
> INFO   | jvm 5    | 2021/05/05 19:21:12 | Error occurred during initialization of VM
> INFO   | jvm 5    | 2021/05/05 19:21:12 | Cannot specify java.base more than once to --patch-module
>  
> It looks like I'm experiencing issue KARAF-6439 (https://issues.apache.org/jira/browse/KARAF-6439 <https://issues.apache.org/jira/browse/KARAF-6439> )
>  
> After some testing it appears that this problem is caused by the handling of the OpenJDK Java versions for AIX of the JDK_JAVA_OPTIONS environment variable :
> If you set
> export JDK_JAVA_OPTIONS="--patch-module java.base=dummy.jar"
> and then run any Java class, like :
> java Dummy
> it will fail to launch a JVM, complaining that "java.base specified more than once to --patch-module"
>  
> I tested with AdoptOpenJDK-11.0.11+9 (both Hotspot and OpenJ9) and with IBM jdk 11 (Eclipse OpenJ9 VM 11.0.10.0-IBM (build openj9-0.24.0, JRE 11 AIX ppc64-64-Bit Compressed References 20210202_3 (JIT enabled, AOT enabled)). All produce similar errors for this case.
>  
> I didn't find an Oracle Java for the AIX platform, nor a compatible jdk from Amazon Coretto or Azul Zulu.
>  
> The only option I see for the moment is removing the use of the JDK_JAVA_OPTIONS environment variable, and putting all those options as wrapper.java.additional.xx JVM parameters. I'll test that, unless anyone has any better ideas ?
>  
> Any input greatly appreciated.
>  
> Grtz,
> Frank 'S Jegers.
>  
> From: Jean-Baptiste Onofre [mailto:jb@nanthrax.net] 
> Sent: woensdag 5 mei 2021 16:09
> To: user
> Subject: Re: Can't start karaf using the wrapper on AIX 7.2
>  
> Hi Frank
>  
> Did you try to install wrapper once karaf is started ?
> Do you have the JDK define in wrapper.conf ?
>  
> Regards
> JB
> 
> 
> Le 5 mai 2021 à 15:49, Frank 'S Jegers <Frank.Sjegers@ikan.be <ma...@ikan.be>> a écrit :
>  
> Hi,
>  
> I'm trying to start karaf using the wrapper script on AIX 7.2.
> Generated the wrapper files by executing :
> karaf/bin/shell wrapper:install -n almagent59 -d "IKAN\ ALM\ 5.9\ Agent" -D "IKAN\ ALM\ 5.9\ Agent\ Daemon"
>  
> Then created a link to the sysV script in /etc/rc.d/init.d/
> sudo ln -s /opt/ikan/almagent59/daemons/agent/karaf/bin/almagent59-service /etc/rc.d/init.d/
>  
> When I run it with "sudo /etc/rc.d/init.d/almagent59-service start", I get the output :
> Starting IKAN ALM 5.9 Agent...
>  
> and then nothing : no Java process, no wrapper.log, no lock file, no karaf.pid file
>  
> In karaf/etc/almagent59-wrapper.conf, I set "wrapper.console.loglevel=DEBUG"
> Then I get the additional output :
> wrapper  | Working directory set to: /opt/ikan/almagent59/daemons/agent/karaf
> wrapper  | Spawning intermediate process...
>  
> I edited the almagent59-service, and echoed the command that gets executed, which is :
> /opt/ikan/almagent59/daemons/agent/karaf/bin/almagent59-wrapper /opt/ikan/almagent59/daemons/agent/karaf/etc/almagent59-wrapper.conf wrapper.syslog.ident=almagent59 wrapper.pidfile=/opt/ikan/almagent59/daemons/agent/karaf/almagent59.wrapper.pid wrapper.daemonize=TRUE
>  
> When I launch Karaf using karaf/bin/karaf, then Karaf starts ok and our application seems to function.
>  
> I've followed similar steps as above to launch karaf using the wrapper script on several Debian and Redhat based Linuxes, using both the sysV script and the systemd unit file, and managed to get it working there. But not so on AIX.
>  
> Any ideas ?
>  
> Karaf version : 4.2.8
>  
> Java version : 
> openjdk version "11.0.11" 2021-04-20
> OpenJDK Runtime Environment AdoptOpenJDK-11.0.11+9 (build 11.0.11+9)
> OpenJDK 64-Bit Server VM AdoptOpenJDK-11.0.11+9 (build 11.0.11+9, mixed mode)
>  
> AIX version : AIX 7.2 7200-03-02-1846
>  
> Thank you,
> Frank 'S Jegers


RE: Can't start karaf using the wrapper on AIX 7.2

Posted by Frank 'S Jegers <Fr...@ikan.be>.
Hi,

I tried with a freshly downloaded Karaf 4.2.11, generated the wrapper files by executing :
export JAVA_HOME=/opt/ikan/java/jdk-11.0.11+9
karaf/bin/shell wrapper:install

Also tried starting Karaf first, then, from the karaf console, did a
feature install wrapper
and
wrapper:install

The JAVA_HOME is set in the karaf-wrapper.conf :
set.default.JAVA_HOME=/opt/ikan/java/jdk-11.0.11+9

But it still wouldn't start. Turns out there was a wrapper.log after all (wasn't looking in the right place).

This is the relevant content :

ERROR  | wrapper  | 2021/05/05 19:21:12 | JVM exited while loading the application.
INFO   | jvm 5    | 2021/05/05 19:21:12 | NOTE: Picked up JDK_JAVA_OPTIONS: --add-reads=java.xml=java.logging --add-exports=java.base/org.apache.karaf.specs.locator=java.xml,ALL-UNNAMED --patch-module java.base=lib/endorsed/org.apache.karaf.specs.locator-4.2.11.jar --patch-module java.xml=lib/endorsed/org.apache.karaf.specs.java.xml-4.2.11.jar --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 --add-exports=java.base/sun.net.www.protocol.file=ALL-UNNAMED --add-exports=java.base/sun.net.www.protocol.ftp=ALL-UNNAMED --add-exports=java.base/sun.net.www.protocol.http=ALL-UNNAMED --add-exports=java.base/sun.net.www.protocol.https=ALL-UNNAMED --add-exports=java.base/sun.net.www.protocol.jar=ALL-UNNAMED --add-exports=java.base/sun.net.www.content.text=ALL-UNNAMED --add-exports=jdk.xml.dom/org.w3c.dom.html=ALL-UNNAMED --add-exports=jdk.naming.rmi/com.sun.jndi.url.rmi=ALL-UNNAMED
INFO   | jvm 5    | 2021/05/05 19:21:12 | NOTE: Picked up JDK_JAVA_OPTIONS: --add-reads=java.xml=java.logging --add-exports=java.base/org.apache.karaf.specs.locator=java.xml,ALL-UNNAMED --patch-module java.base=lib/endorsed/org.apache.karaf.specs.locator-4.2.11.jar --patch-module java.xml=lib/endorsed/org.apache.karaf.specs.java.xml-4.2.11.jar --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 --add-exports=java.base/sun.net.www.protocol.file=ALL-UNNAMED --add-exports=java.base/sun.net.www.protocol.ftp=ALL-UNNAMED --add-exports=java.base/sun.net.www.protocol.http=ALL-UNNAMED --add-exports=java.base/sun.net.www.protocol.https=ALL-UNNAMED --add-exports=java.base/sun.net.www.protocol.jar=ALL-UNNAMED --add-exports=java.base/sun.net.www.content.text=ALL-UNNAMED --add-exports=jdk.xml.dom/org.w3c.dom.html=ALL-UNNAMED --add-exports=jdk.naming.rmi/com.sun.jndi.url.rmi=ALL-UNNAMED
INFO   | jvm 5    | 2021/05/05 19:21:12 | Error occurred during initialization of VM
INFO   | jvm 5    | 2021/05/05 19:21:12 | Cannot specify java.base more than once to --patch-module

It looks like I'm experiencing issue KARAF-6439 (https://issues.apache.org/jira/browse/KARAF-6439 )

After some testing it appears that this problem is caused by the handling of the OpenJDK Java versions for AIX of the JDK_JAVA_OPTIONS environment variable :
If you set
export JDK_JAVA_OPTIONS="--patch-module java.base=dummy.jar"
and then run any Java class, like :
java Dummy
it will fail to launch a JVM, complaining that "java.base specified more than once to --patch-module"

I tested with AdoptOpenJDK-11.0.11+9 (both Hotspot and OpenJ9) and with IBM jdk 11 (Eclipse OpenJ9 VM 11.0.10.0-IBM (build openj9-0.24.0, JRE 11 AIX ppc64-64-Bit Compressed References 20210202_3 (JIT enabled, AOT enabled)). All produce similar errors for this case.

I didn't find an Oracle Java for the AIX platform, nor a compatible jdk from Amazon Coretto or Azul Zulu.

The only option I see for the moment is removing the use of the JDK_JAVA_OPTIONS environment variable, and putting all those options as wrapper.java.additional.xx JVM parameters. I'll test that, unless anyone has any better ideas ?

Any input greatly appreciated.

Grtz,
Frank 'S Jegers.

From: Jean-Baptiste Onofre [mailto:jb@nanthrax.net]
Sent: woensdag 5 mei 2021 16:09
To: user
Subject: Re: Can't start karaf using the wrapper on AIX 7.2

Hi Frank

Did you try to install wrapper once karaf is started ?
Do you have the JDK define in wrapper.conf ?

Regards
JB


Le 5 mai 2021 à 15:49, Frank 'S Jegers <Fr...@ikan.be>> a écrit :

Hi,

I'm trying to start karaf using the wrapper script on AIX 7.2.
Generated the wrapper files by executing :
karaf/bin/shell wrapper:install -n almagent59 -d "IKAN\ ALM\ 5.9\ Agent" -D "IKAN\ ALM\ 5.9\ Agent\ Daemon"

Then created a link to the sysV script in /etc/rc.d/init.d/
sudo ln -s /opt/ikan/almagent59/daemons/agent/karaf/bin/almagent59-service /etc/rc.d/init.d/

When I run it with "sudo /etc/rc.d/init.d/almagent59-service start", I get the output :
Starting IKAN ALM 5.9 Agent...

and then nothing : no Java process, no wrapper.log, no lock file, no karaf.pid file

In karaf/etc/almagent59-wrapper.conf, I set "wrapper.console.loglevel=DEBUG"
Then I get the additional output :
wrapper  | Working directory set to: /opt/ikan/almagent59/daemons/agent/karaf
wrapper  | Spawning intermediate process...

I edited the almagent59-service, and echoed the command that gets executed, which is :
/opt/ikan/almagent59/daemons/agent/karaf/bin/almagent59-wrapper /opt/ikan/almagent59/daemons/agent/karaf/etc/almagent59-wrapper.conf wrapper.syslog.ident=almagent59 wrapper.pidfile=/opt/ikan/almagent59/daemons/agent/karaf/almagent59.wrapper.pid wrapper.daemonize=TRUE

When I launch Karaf using karaf/bin/karaf, then Karaf starts ok and our application seems to function.

I've followed similar steps as above to launch karaf using the wrapper script on several Debian and Redhat based Linuxes, using both the sysV script and the systemd unit file, and managed to get it working there. But not so on AIX.

Any ideas ?

Karaf version : 4.2.8

Java version :
openjdk version "11.0.11" 2021-04-20
OpenJDK Runtime Environment AdoptOpenJDK-11.0.11+9 (build 11.0.11+9)
OpenJDK 64-Bit Server VM AdoptOpenJDK-11.0.11+9 (build 11.0.11+9, mixed mode)

AIX version : AIX 7.2 7200-03-02-1846

Thank you,
Frank 'S Jegers


Re: Can't start karaf using the wrapper on AIX 7.2

Posted by Jean-Baptiste Onofre <jb...@nanthrax.net>.
Hi Frank

Did you try to install wrapper once karaf is started ?
Do you have the JDK define in wrapper.conf ?

Regards
JB

> Le 5 mai 2021 à 15:49, Frank 'S Jegers <Fr...@ikan.be> a écrit :
> 
> Hi,
>  
> I'm trying to start karaf using the wrapper script on AIX 7.2.
> Generated the wrapper files by executing :
> karaf/bin/shell wrapper:install -n almagent59 -d "IKAN\ ALM\ 5.9\ Agent" -D "IKAN\ ALM\ 5.9\ Agent\ Daemon"
>  
> Then created a link to the sysV script in /etc/rc.d/init.d/
> sudo ln -s /opt/ikan/almagent59/daemons/agent/karaf/bin/almagent59-service /etc/rc.d/init.d/
>  
> When I run it with "sudo /etc/rc.d/init.d/almagent59-service start", I get the output :
> Starting IKAN ALM 5.9 Agent...
>  
> and then nothing : no Java process, no wrapper.log, no lock file, no karaf.pid file
>  
> In karaf/etc/almagent59-wrapper.conf, I set "wrapper.console.loglevel=DEBUG"
> Then I get the additional output :
> wrapper  | Working directory set to: /opt/ikan/almagent59/daemons/agent/karaf
> wrapper  | Spawning intermediate process...
>  
> I edited the almagent59-service, and echoed the command that gets executed, which is :
> /opt/ikan/almagent59/daemons/agent/karaf/bin/almagent59-wrapper /opt/ikan/almagent59/daemons/agent/karaf/etc/almagent59-wrapper.conf wrapper.syslog.ident=almagent59 wrapper.pidfile=/opt/ikan/almagent59/daemons/agent/karaf/almagent59.wrapper.pid wrapper.daemonize=TRUE
>  
> When I launch Karaf using karaf/bin/karaf, then Karaf starts ok and our application seems to function.
>  
> I've followed similar steps as above to launch karaf using the wrapper script on several Debian and Redhat based Linuxes, using both the sysV script and the systemd unit file, and managed to get it working there. But not so on AIX.
>  
> Any ideas ?
>  
> Karaf version : 4.2.8
>  
> Java version : 
> openjdk version "11.0.11" 2021-04-20
> OpenJDK Runtime Environment AdoptOpenJDK-11.0.11+9 (build 11.0.11+9)
> OpenJDK 64-Bit Server VM AdoptOpenJDK-11.0.11+9 (build 11.0.11+9, mixed mode)
>  
> AIX version : AIX 7.2 7200-03-02-1846
>  
> Thank you,
> Frank 'S Jegers