ApplicationDirectoryProducer.java
package org.ferris.resiste.console.application;
import java.io.File;
import java.net.URI;
import java.net.URL;
import javax.annotation.PostConstruct;
import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.inject.Produces;
/**
*
* @author Michael Remijan mjremijan@yahoo.com @mjremijan
*/
@ApplicationScoped
public class ApplicationDirectoryProducer {
protected ApplicationDirectory applicationDirectory;
@PostConstruct
protected void postConstruct() {
// This code assumes the following directory structure
//
// /app
// /bin
// /lib
// ferris-app-1.0.0.0.jar
// /logs
//
// So the the application directory will be 1
// directory up from where the JAR file is located.
try {
URL jarURL = ApplicationDirectory.class.getProtectionDomain().getCodeSource().getLocation();
URI jarURI = jarURL.toURI();
File jarFile = new File(jarURI);
File appFile = jarFile.getParentFile().getParentFile();
applicationDirectory = new ApplicationDirectory(appFile.getAbsolutePath());
} catch (Throwable t) {
throw new RuntimeException(t);
}
}
@Produces
protected ApplicationDirectory produceApplicationDirectory() {
return applicationDirectory;
}
}