Fixing WebServer integration after created server

The web page was not loading
This commit is contained in:
Clebert Suconic 2015-05-04 18:33:53 -04:00
parent bebd8093c0
commit 2a6422bc6f
5 changed files with 33 additions and 14 deletions

View File

@ -42,6 +42,8 @@ public abstract class Configurable
private String brokerInstance; private String brokerInstance;
private String brokerHome;
private FileConfiguration fileConfiguration; private FileConfiguration fileConfiguration;
protected String getBrokerInstance() protected String getBrokerInstance()
@ -61,6 +63,23 @@ public abstract class Configurable
return brokerInstance; 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 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); Class clazz = this.getClass().getClassLoader().loadClass(componentDTO.componentClassName);
ExternalComponent component = (ExternalComponent)clazz.newInstance(); ExternalComponent component = (ExternalComponent)clazz.newInstance();
component.configure(componentDTO, getBrokerInstance()); component.configure(componentDTO, getBrokerInstance(), getBrokerHome());
component.start(); component.start();
components.add(component); components.add(component);
} }

View File

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

View File

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