Wildfly embedded autodownload


#1

Hi, related to this issue [Solved] Wildfly Embedded and Eclipse
I was thinking that we could start working in small steps so users that want to use wildfly embedded doesn’t need to start dealing with maven dependency plugin and for example having problems when they try to run their tests from IDE (which can cause some problems as described in previous link).

So what do you think about modifying for now the wildfly embedded adapter so in case that wildfly is not present on target directory it is automatically downloaded. Of course this would mean that we need to set a configuration parameter to set the coordinates but thanks of this I think we will be able to:

  1. avoid having to use maven dependency plugin or some hack in gradle
  2. Some properties like jboss.home and module.path can be automatically set
  3. maybe java.util.logging.manager can be set a default value with org.jboss.logmanager.LogManager class so you don’t need to set it any more if you are going to use the default one.

I have time to implement this feature and my idea would be implement it as it is currently done in TomEE https://github.com/apache/tomee/blob/develop/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java#L205

WDYT?


#2

Personally I would have added it as a feature to the Container Proxy, not the Container it self. The Container Proxy already knows about the Maven artifacts etc and unzipping a dist would be a simple enhancement.

As a added goodie you get the feature for JBoss AS 7 Managed/Embedded, WildFly 8/9 Managed/Embedded and JBoss EAP 6 in one go! :ike_success:

Arquillian Container Proxy: https://github.com/aslakknutsen/arquillian-container-proxy

Previously discussed here: Proxy Container for all JBoss AS / JBoss EAP / WildFly?


#3

Yes just wanted to start a new topic instead of reusing an existing one that was to announce the container proxy. So maybe we can start working on this for sure there.

Currently I have seen that Container Proxy does not download wildfly zipped but the dependencies to run the test. Ok then let me clone the project and start looking how to implement this for embedded mode. If it works then let’s see if we can extrapolate to managed (less important now IMO because in fact developers knows what a managed server implies in Arquillian) and if we can even move forward to glassfish, tomee, …

WDYT?


#4

I wonder if using SpaceLift to download and install deps would be an option?


#5

Yes I think this is a really good idea and also I think that spacelift was created for just solving this kind of problems, I am going to make a PoC using spacelift and see how is working.


#6

Well I have though that because the project is using Shrinkwrap Maven resolver we could resolve dependency (download zip) using Shrinkwrap so we avoid some problems with proxies, caching system or adding a new dependency.


#7

SpaceLift might be an overkill for a simple ‘JBoss AS/WildFly’ Maven Repository download, as you say, Resolver would do the job. But it might come in handy if we expand this to include Containers that are not represented in a Maven Repository or that need some more setup then a simple unzip.


#8

Ok I can start by using the Maven approach for now, and let’s release it (maybe we can try to be 1.0) and then we can think about adding a new layer for servers that are not on maven central repo.

WDYT?


#9

is it possible to uncompress a zip file using Shrinkwrap? If not then spacelift could be the option because it implements unzip command too.


#10

You can if you get it as a ShrinkWrap Archive and export it using the ExplodedExporter…

ish…

Resolver....as(GenericArchive.class).as(ExplodedExporter.class).exportTo(Folder)

You might be able to get it as an ExplodedExporter directly from Resolver, never tried…


#11

It worked :smiley: I think that a refcard about Shrinkwrap would be a must. It is a hidden gem that you can use for really different things for managing files but at same time maybe not as well documented as other parts.