Hi, Does not work. If you take a look at the https://github.com/apache/karaf/blob/60b284e4611824aaf420dd64f3c2d4d7dec56d61/instance/src/main/java/org/apache/karaf/jpm/impl/ScriptUtils.java, it does execute instances with this code: public static int execute(String name, Map<String, String> props) throws IOException { File script = File.createTempFile("jpm.", ".script"); try { if (isWindows()) { String res = "windows/" + name + ".vbs"; ScriptUtils.copyFilteredResource(res, script, props); return executeProcess(new java.lang.ProcessBuilder("cscript", "/NOLOGO", "//E:vbs", script.getCanonicalPath())); } else { String res = "unix/" + name + ".sh"; ScriptUtils.copyFilteredResource(res, script, props); return executeProcess(new java.lang.ProcessBuilder("/bin/sh", script.getCanonicalPath())); } } finally { script.delete(); } }
The environment for a forked process could be set with http://docs.oracle.com/javase/7/docs/api/java/lang/ProcessBuilder.html#environment() method. This is however not used in the code above. The sh file, which will be executed is at https://github.com/apache/karaf/blob/60b284e4611824aaf420dd64f3c2d4d7dec56d61/instance/src/main/resources/org/apache/karaf/jpm/impl/unix/start.sh. It also does not contain anything related. So I think this is not possible today. Is it a good feature request candidate? :) Regards, Gábor 2015-06-12 10:39 GMT+02:00 Jean-Baptiste Onofré <[email protected]>: > Hi, > > I meant, that in Pax-Exam, you do: > > @Configuration > public Option[] config() { > Option[] options = new Option[]{ > ... > > editConfigurationFileExtend("instances/foo/etc/system.properties", > "foo.bar", System.getEnv("foo.bar")), > }; > ... > return options; > } > > Regards > JB > > On 06/12/2015 10:33 AM, Gábor Lipták wrote: > >> Hi Jean-Baptiste, >> >> Thanks for the prompt answer. I checked what you said. I created an >> instance and started it. The system.properties contains such stuff for >> example: >> karaf.name <http://karaf.name> = node3 >> karaf.default.repository = system >> >> However when I list the env entries with the following command: >> >cat /proc/PID/environ >> >> None of the properties set inside system.properties are displayed. I >> need environment entries, not system properties. >> >> Thanks and kind regards, >> >> Gábor >> >> >> 2015-06-12 10:20 GMT+02:00 Jean-Baptiste Onofré <[email protected] >> <mailto:[email protected]>>: >> >> Hi Gabor, >> >> you can update the etc/system.properties of the child instance where >> you define the environment entry. >> >> Regards >> JB >> >> On 06/12/2015 10:17 AM, Gábor Lipták wrote: >> >> Hi, >> >> I have a problem (see http://stackoverflow.com/q/30791369/337621 >> ): >> >> I am testing a clustering solution for Felix with Pax Exam and >> Karaf >> (see >> >> http://planet.jboss.org/post/advanced_integration_testing_with_pax_exam_karaf >> ). >> I start up several Karaf instances and play with them in the test. >> >> If I want to be sure that the Karaf instances will be stopped in >> Jenkins >> when my test is aborted for some reason then I need to set some >> environment entries for the forked containers (see How to fork a >> background process in Jenkins? Setting BUILD_ID and using nohup >> seems to >> be non working) Is there a way to do so? I can set system >> properties >> with the admin:create command option called --java-opts but I >> cannot set >> any environment entry for the forked process. Do you know any way >> or >> trick to set them? >> >> Any help appreciated. Do you think this is a good improvement >> for the >> admin service? Should I create a JIRA for it? >> >> Regards, >> >> Gábor Lipták >> >> >> -- >> Jean-Baptiste Onofré >> [email protected] <mailto:[email protected]> >> http://blog.nanthrax.net >> Talend - http://www.talend.com >> >> >> > -- > Jean-Baptiste Onofré > [email protected] > http://blog.nanthrax.net > Talend - http://www.talend.com >
