/** * GRANITE DATA SERVICES * Copyright (C) 2006-2015 GRANITE DATA SERVICES S.A.S. * * This file is part of the Granite Data Services Platform. * * Granite Data Services is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * Granite Data Services is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser * General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, * USA, or see <http://www.gnu.org/licenses/>. */ package org.granite.test.container.jbossas; import org.apache.catalina.startup.CatalinaProperties; import org.apache.catalina.startup.Tomcat; import org.granite.test.container.EmbeddedContainer; import org.granite.test.container.Utils; import org.jboss.as.domain.management.security.AddPropertiesUser; import org.jboss.as.embedded.EmbeddedServerFactory; import org.jboss.as.embedded.StandaloneServer; import org.jboss.as.server.EmbeddedStandAloneServerFactory; import org.jboss.modules.ModuleLoader; import org.jboss.shrinkwrap.api.exporter.ZipExporter; import org.jboss.shrinkwrap.api.spec.WebArchive; import java.io.File; import java.io.FileInputStream; import java.util.HashMap; import java.util.Properties; /** * Created by william on 20/02/14. */ public class EmbeddedJBossAS implements EmbeddedContainer { private File jbossHome = new File(System.getProperty("jboss.home")); private File embeddedJbossHome; private StandaloneServer jboss; private File warFile; public EmbeddedJBossAS(WebArchive war, boolean persistSessions) throws Exception { embeddedJbossHome = File.createTempFile("emb-jbas-", ""); embeddedJbossHome.delete(); embeddedJbossHome.mkdirs(); System.setProperty("java.util.logging.manager", "org.jboss.logmanager.LogManager"); System.setProperty("jboss.http.port", "8787"); System.setProperty("jboss.embedded.root", embeddedJbossHome.getAbsolutePath()); Properties properties = new Properties(); properties.put("jboss.home.dir", jbossHome.getAbsolutePath()); properties.put("jboss.embedded.root", embeddedJbossHome.getAbsolutePath()); properties.put("java.util.logging.manager", "org.jboss.logmanager.LogManager"); jboss = EmbeddedServerFactory.create(jbossHome, properties, new HashMap<String, String>()); war.addAsLibraries(new File("granite-server-core/build/libs/").listFiles(new Utils.ArtifactFilenameFilter())); war.addAsLibraries(new File("granite-server-servlet3/build/libs/").listFiles(new Utils.ArtifactFilenameFilter())); war.addAsLibraries(new File("granite-server-jboss/build/libs/").listFiles(new Utils.ArtifactFilenameFilter())); war.addAsLibraries(new File("granite-server-tomcat7/build/libs/").listFiles(new Utils.ArtifactFilenameFilter())); // initWar(war); File tmp = new File(embeddedJbossHome, "tmp"); tmp.delete(); tmp.mkdirs(); warFile = new File(tmp, war.getName()); war.as(ZipExporter.class).exportTo(warFile, true); } @Override public void start() { try { jboss.start(); jboss.deploy(warFile); } catch (Exception e) { throw new RuntimeException("Could not start embedded jboss", e); } } @Override public void stop() { jboss.stop(); } @Override public void restart() { stop(); start(); } @Override public void destroy() { } }