[jboss-jira] [JBoss JIRA] (WFLY-2427) Launcher API

Max Rydahl Andersen (JIRA) jira-events at lists.jboss.org
Thu Nov 7 05:06:02 EST 2013


    [ https://issues.jboss.org/browse/WFLY-2427?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12851650#comment-12851650 ] 

Max Rydahl Andersen commented on WFLY-2427:
-------------------------------------------

btw. at little more background: 

We don't call the OS specific script for one primary reason:

There is no portable way of calling these scripts AND have control over the Java process (i.e. we need to be able to kill it in case the user already have a running server on the same port. JBoss will start up saying it cannot use the port but will not exit - and any attempt to kill it via management would kill the other running server.)

The main problem not using the scripts are that user customized fields/properties are *not* honored.
Things like memory settings edit in run.conf or run.conf.bat wont be understood by the tooling.

We would optimally prefer we could simply do this:

java -jar jboss-modules.jar -properties run.properties

And then whatever settings there are in run.properties gets applied/honored.

That can work for majority of the jboss properties, but for vm flags like memory settings and properties that could be relevant before jboss-modules kicks in (i.e. -Djava.net.preferIPv4Stack=true) would be necessary to read some otherway and done by the servers script files.


                
> Launcher API
> ------------
>
>                 Key: WFLY-2427
>                 URL: https://issues.jboss.org/browse/WFLY-2427
>             Project: WildFly
>          Issue Type: Feature Request
>      Security Level: Public(Everyone can see) 
>          Components: Server
>            Reporter: Brian Stansberry
>
> 1) The AS should have some sort of API for launching our processes so tools that want a process have a clear contract instead of having to guess at what's relevant in our ever-changing scripts.
> 2) We want the main class in our process launch to be what's invoked by java -jar jboss-modules.jar. We don't want java -jar jboss-as-launcher.jar which does some stuff and then calls org.jboss.modules.Main.
> 3) JBoss Modules itself shouldn't have a lot of the stuff in it that's relevant to an AS launcher API, because many of those things are not relevant to JBoss Modules in a generic sense.
> What we could do though is provide a launcher lib that isn't involved at all in our normal boot. Something that would only be used by tools that want to launch a separate, i.e. non-embedded, AS process.
> So, some sort of stable configuration API and then a simple
> java.lang.Process launch()
> Basically, a utility that does the ProcessBuilder stuff that everybody is doing themselves now. 
> h2. HOWEVER...
> Eclipse-based tools like JBDS use Eclipse APIs for launch and would not use the above launch() method.
> So, besides that launch method, look into adding some methods to give the necessary inputs to the Eclipse API be useful. So Eclipse-based tools don't ask it for the process but can still get a standard launch configuration.
> I'd only want to do that if those methods would return something generally understandable, but a String or List<String> for classpath, List<String>s for vm/program args, some representation that "-jar jboss-modules.jar" is the way to get the main class -- those all seem generic enough.
> Any "which VM" stuff is consider out of scope; choosing the VM is the responsibility of the tool. Options that are not universally supported across VMs and are those a function of VM choice, like whether to use -server, are also out of scope. 
> h2. Example of EAP 6.0 launch:
> VM arguments:
> -server -Xms64m -Xmx512m -XX:MaxPermSize=256m -Djava.net.preferIPv4Stack=true -Dorg.jboss.resolver.warning=true -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true "-Dorg.jboss.boot.log.file=/Users/max/products/runtimes/jboss-eap-6.0/standalone/log/boot.log" "-Dlogging.configuration=file:/Users/max/products/runtimes/jboss-eap-6.0/standalone/configuration/logging.properties" "-Djboss.home.dir=/Users/max/products/runtimes/jboss-eap-6.0"
> Program argument:
> -mp "/Users/max/products/runtimes/jboss-eap-6.0/modules" -jaxpmodule javax.xml.jaxp-provider org.jboss.as.standalone -b localhost --server-config=standalone.xml 

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


More information about the jboss-jira mailing list