this closes #223 on fixing web server integration

This commit is contained in:
Clebert Suconic 2015-05-04 23:01:58 -04:00
commit 9843f5f317
5 changed files with 33 additions and 14 deletions

View File

@ -42,6 +42,8 @@ public abstract class Configurable
private String brokerInstance;
private String brokerHome;
private FileConfiguration fileConfiguration;
protected String getBrokerInstance()
@ -61,6 +63,23 @@ public abstract class Configurable
return brokerInstance;
}
protected String getBrokerHome()
{
if (brokerHome == null)
{
/* We use File URI for locating files. The ARTEMIS_HOME variable is used to determine file paths. For Windows
the ARTEMIS_HOME variable will include back slashes (An invalid file URI character path separator). For this
reason we overwrite the ARTEMIS_HOME variable with backslashes replaced with forward slashes. */
brokerHome = System.getProperty("artemis.home");
if (brokerHome != null)
{
brokerHome = brokerHome.replace("\\", "/");
System.setProperty("artemis.home", brokerHome);
}
}
return brokerHome;
}
protected FileConfiguration getFileConfiguration() throws Exception
{

View File

@ -66,7 +66,7 @@ public class Run extends Configurable implements Action
{
Class clazz = this.getClass().getClassLoader().loadClass(componentDTO.componentClassName);
ExternalComponent component = (ExternalComponent)clazz.newInstance();
component.configure(componentDTO, getBrokerInstance());
component.configure(componentDTO, getBrokerInstance(), getBrokerHome());
component.start();
components.add(component);
}

View File

@ -21,5 +21,5 @@ import org.apache.activemq.artemis.dto.ComponentDTO;
public interface ExternalComponent extends ActiveMQComponent
{
void configure(ComponentDTO config, String activemqHome) throws Exception;
void configure(ComponentDTO config, String artemisInstance, String artemisHome) throws Exception;
}

View File

@ -16,6 +16,8 @@
*/
package org.apache.activemq.artemis.component;
import java.net.URI;
import org.apache.activemq.artemis.components.ExternalComponent;
import org.apache.activemq.artemis.dto.AppDTO;
import org.apache.activemq.artemis.dto.ComponentDTO;
@ -28,8 +30,6 @@ import org.eclipse.jetty.server.handler.ResourceHandler;
import org.eclipse.jetty.server.nio.SelectChannelConnector;
import org.eclipse.jetty.webapp.WebAppContext;
import java.net.URI;
public class WebServerComponent implements ExternalComponent
{
@ -38,7 +38,7 @@ public class WebServerComponent implements ExternalComponent
private WebServerDTO webServerConfig;
@Override
public void configure(ComponentDTO config, String activemqHome) throws Exception
public void configure(ComponentDTO config, String artemisInstance, String artemisHome) throws Exception
{
webServerConfig = (WebServerDTO)config;
String path = webServerConfig.path.startsWith("/") ? webServerConfig.path : "/" + webServerConfig.path;
@ -56,17 +56,17 @@ public class WebServerComponent implements ExternalComponent
{
for (AppDTO app : webServerConfig.apps)
{
deployWar(app.url, app.war, activemqHome, path);
deployWar(app.url, app.war, artemisHome, path);
}
}
WebAppContext handler = new WebAppContext();
handler.setContextPath("/");
handler.setResourceBase(activemqHome + path);
handler.setResourceBase(artemisHome + path);
handler.setLogUrlOnStart(true);
ResourceHandler resourceHandler = new ResourceHandler();
resourceHandler.setResourceBase(activemqHome + path);
resourceHandler.setResourceBase(artemisHome + path);
resourceHandler.setDirectoriesListed(true);
resourceHandler.setWelcomeFiles(new String[]{"index.html"});

View File

@ -16,6 +16,11 @@
*/
package org.apache.activemq.artemis.test;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import io.netty.bootstrap.Bootstrap;
import io.netty.channel.Channel;
import io.netty.channel.ChannelHandlerContext;
@ -39,11 +44,6 @@ import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
public class WebServerComponentTest extends Assert
{
static final String URL = System.getProperty("url", "http://localhost:8161/WebServerComponentTest.txt");
@ -64,7 +64,7 @@ public class WebServerComponentTest extends Assert
webServerDTO.bind = "http://localhost:8161";
webServerDTO.path = "webapps";
WebServerComponent webServerComponent = new WebServerComponent();
webServerComponent.configure(webServerDTO, "./src/test/resources/");
webServerComponent.configure(webServerDTO, "./src/test/resources/", "./src/test/resources/");
webServerComponent.start();
// Make the connection attempt.
CountDownLatch latch = new CountDownLatch(1);