Repository: activemq-6 Updated Branches: refs/heads/master 592e47f28 -> 4e8edab4f
ACTIVEMQ6-35 - expose web server configuration https://issues.apache.org/jira/browse/ACTIVEMQ6-35 Added configuration to allow a web server (or any external component) to be deployed. Added a default Jetty configuration and implementation. Project: http://git-wip-us.apache.org/repos/asf/activemq-6/repo Commit: http://git-wip-us.apache.org/repos/asf/activemq-6/commit/eb4f8354 Tree: http://git-wip-us.apache.org/repos/asf/activemq-6/tree/eb4f8354 Diff: http://git-wip-us.apache.org/repos/asf/activemq-6/diff/eb4f8354 Branch: refs/heads/master Commit: eb4f835477b7692f605c072e1319d88bcd4e92f2 Parents: b37321b Author: Andy Taylor <[email protected]> Authored: Fri Nov 28 11:46:12 2014 +0000 Committer: Andy Taylor <[email protected]> Committed: Tue Dec 2 16:52:08 2014 +0000 ---------------------------------------------------------------------- .../org/apache/activemq/cli/commands/Run.java | 24 +- .../activemq/components/ExternalComponent.java | 25 ++ activemq-dto/pom.xml | 7 +- .../java/org/apache/activemq/dto/AppDTO.java | 34 +++ .../java/org/apache/activemq/dto/BrokerDTO.java | 8 + .../org/apache/activemq/dto/ComponentDTO.java | 30 +++ .../org/apache/activemq/dto/WebServerDTO.java | 43 ++++ activemq-journal/pom.xml | 38 --- activemq-selector/pom.xml | 37 --- activemq-web/pom.xml | 47 ++++ .../activemq/component/WebServerComponent.java | 112 +++++++++ .../activemq/test/WebServerComponentTest.java | 125 ++++++++++ .../webapps/WebServerComponentTest.txt | 1 + activemq-website/pom.xml | 96 ++++++++ .../src/main/resources/images/activemq-logo.png | Bin 0 -> 6819 bytes activemq-website/src/main/resources/index.html | 64 +++++ .../resources/styles/impact/css/pygmentize.css | 127 ++++++++++ .../main/resources/styles/impact/css/site.css | 235 +++++++++++++++++++ distribution/activemq/pom.xml | 25 +- distribution/activemq/src/main/assembly/dep.xml | 53 +++-- .../resources/config/clustered/bootstrap.xml | 7 +- .../config/non-clustered/bootstrap.xml | 7 +- .../resources/config/replicated/bootstrap.xml | 7 +- .../resources/config/shared-store/bootstrap.xml | 7 +- docs/user-manual/pom.xml | 36 +-- pom.xml | 21 ++ readme.txt | 0 27 files changed, 1087 insertions(+), 129 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/activemq-6/blob/eb4f8354/activemq-bootstrap/src/main/java/org/apache/activemq/cli/commands/Run.java ---------------------------------------------------------------------- diff --git a/activemq-bootstrap/src/main/java/org/apache/activemq/cli/commands/Run.java b/activemq-bootstrap/src/main/java/org/apache/activemq/cli/commands/Run.java index adf5b6e..8bab07e 100644 --- a/activemq-bootstrap/src/main/java/org/apache/activemq/cli/commands/Run.java +++ b/activemq-bootstrap/src/main/java/org/apache/activemq/cli/commands/Run.java @@ -20,9 +20,12 @@ import io.airlift.command.Arguments; import io.airlift.command.Command; import org.apache.activemq.cli.ActiveMQ; +import org.apache.activemq.components.ExternalComponent; import org.apache.activemq.core.config.Configuration; +import org.apache.activemq.core.server.ActiveMQComponent; import org.apache.activemq.core.server.impl.ActiveMQServerImpl; import org.apache.activemq.dto.BrokerDTO; +import org.apache.activemq.dto.ComponentDTO; import org.apache.activemq.factory.BrokerFactory; import org.apache.activemq.factory.CoreFactory; import org.apache.activemq.factory.JmsFactory; @@ -38,6 +41,7 @@ import javax.management.MBeanServer; import java.io.File; import java.lang.management.ManagementFactory; +import java.util.ArrayList; import java.util.Timer; import java.util.TimerTask; @@ -49,6 +53,7 @@ public class Run implements Action String configuration; private StandaloneNamingServer namingServer; private JMSServerManager jmsServerManager; + private ArrayList<ActiveMQComponent> components = new ArrayList<>(); @Override public Object execute(ActionContext context) throws Exception @@ -56,9 +61,11 @@ public class Run implements Action ActiveMQ.printBanner(); + String activemqHome = System.getProperty("activemq.home").replace("\\", "/"); + if (configuration == null) { - configuration = "xml:" + System.getProperty("activemq.home").replace("\\", "/") + "/config/non-clustered/bootstrap.xml"; + configuration = "xml:" + activemqHome + "/config/non-clustered/bootstrap.xml"; } System.out.println("Loading configuration file: " + configuration); @@ -104,6 +111,20 @@ public class Run implements Action jmsServerManager.start(); + if (broker.web != null) + { + broker.components.add(broker.web); + } + + for (ComponentDTO componentDTO : broker.components) + { + Class clazz = this.getClass().getClassLoader().loadClass(componentDTO.componentClassName); + ExternalComponent component = (ExternalComponent)clazz.newInstance(); + component.configure(componentDTO, activemqHome); + component.start(); + components.add(component); + } + return null; } @@ -133,6 +154,7 @@ public class Run implements Action { try { + //TODO stop components jmsServerManager.stop(); } catch (Exception e) http://git-wip-us.apache.org/repos/asf/activemq-6/blob/eb4f8354/activemq-bootstrap/src/main/java/org/apache/activemq/components/ExternalComponent.java ---------------------------------------------------------------------- diff --git a/activemq-bootstrap/src/main/java/org/apache/activemq/components/ExternalComponent.java b/activemq-bootstrap/src/main/java/org/apache/activemq/components/ExternalComponent.java new file mode 100644 index 0000000..ae5d387 --- /dev/null +++ b/activemq-bootstrap/src/main/java/org/apache/activemq/components/ExternalComponent.java @@ -0,0 +1,25 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.activemq.components; + +import org.apache.activemq.core.server.ActiveMQComponent; +import org.apache.activemq.dto.ComponentDTO; + +public interface ExternalComponent extends ActiveMQComponent +{ + void configure(ComponentDTO config, String activemqHome) throws Exception; +} http://git-wip-us.apache.org/repos/asf/activemq-6/blob/eb4f8354/activemq-dto/pom.xml ---------------------------------------------------------------------- diff --git a/activemq-dto/pom.xml b/activemq-dto/pom.xml index 98d9bb7..f57a571 100644 --- a/activemq-dto/pom.xml +++ b/activemq-dto/pom.xml @@ -18,6 +18,11 @@ <dependencies> <dependency> + <groupId>org.apache.activemq</groupId> + <artifactId>activemq-commons</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>${jackson-databind.version}</version> @@ -144,4 +149,4 @@ </profile> </profiles> -</project> \ No newline at end of file +</project> http://git-wip-us.apache.org/repos/asf/activemq-6/blob/eb4f8354/activemq-dto/src/main/java/org/apache/activemq/dto/AppDTO.java ---------------------------------------------------------------------- diff --git a/activemq-dto/src/main/java/org/apache/activemq/dto/AppDTO.java b/activemq-dto/src/main/java/org/apache/activemq/dto/AppDTO.java new file mode 100644 index 0000000..5d1e043 --- /dev/null +++ b/activemq-dto/src/main/java/org/apache/activemq/dto/AppDTO.java @@ -0,0 +1,34 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.activemq.dto; + + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement(name = "app") +@XmlAccessorType(XmlAccessType.FIELD) +public class AppDTO +{ + @XmlAttribute + public String url; + + @XmlAttribute + public String war; +} http://git-wip-us.apache.org/repos/asf/activemq-6/blob/eb4f8354/activemq-dto/src/main/java/org/apache/activemq/dto/BrokerDTO.java ---------------------------------------------------------------------- diff --git a/activemq-dto/src/main/java/org/apache/activemq/dto/BrokerDTO.java b/activemq-dto/src/main/java/org/apache/activemq/dto/BrokerDTO.java index 6b0f399..70e6767 100644 --- a/activemq-dto/src/main/java/org/apache/activemq/dto/BrokerDTO.java +++ b/activemq-dto/src/main/java/org/apache/activemq/dto/BrokerDTO.java @@ -22,6 +22,8 @@ import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElementRef; import javax.xml.bind.annotation.XmlRootElement; +import java.util.ArrayList; +import java.util.List; @XmlRootElement(name = "broker") @XmlAccessorType(XmlAccessType.FIELD) @@ -41,4 +43,10 @@ public class BrokerDTO @XmlElementRef public NamingDTO naming; + @XmlElementRef(required = false) + public WebServerDTO web; + + @XmlElementRef + public List<ComponentDTO> components = new ArrayList<>(); + } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/activemq-6/blob/eb4f8354/activemq-dto/src/main/java/org/apache/activemq/dto/ComponentDTO.java ---------------------------------------------------------------------- diff --git a/activemq-dto/src/main/java/org/apache/activemq/dto/ComponentDTO.java b/activemq-dto/src/main/java/org/apache/activemq/dto/ComponentDTO.java new file mode 100644 index 0000000..8fd9868 --- /dev/null +++ b/activemq-dto/src/main/java/org/apache/activemq/dto/ComponentDTO.java @@ -0,0 +1,30 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.activemq.dto; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement(name = "component") +@XmlAccessorType(XmlAccessType.FIELD) +public class ComponentDTO +{ + @XmlAttribute + public String componentClassName; +} http://git-wip-us.apache.org/repos/asf/activemq-6/blob/eb4f8354/activemq-dto/src/main/java/org/apache/activemq/dto/WebServerDTO.java ---------------------------------------------------------------------- diff --git a/activemq-dto/src/main/java/org/apache/activemq/dto/WebServerDTO.java b/activemq-dto/src/main/java/org/apache/activemq/dto/WebServerDTO.java new file mode 100644 index 0000000..5875ac4 --- /dev/null +++ b/activemq-dto/src/main/java/org/apache/activemq/dto/WebServerDTO.java @@ -0,0 +1,43 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.activemq.dto; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlElementRef; +import javax.xml.bind.annotation.XmlRootElement; +import java.util.List; + +@XmlRootElement(name = "web") +@XmlAccessorType(XmlAccessType.FIELD) +public class WebServerDTO extends ComponentDTO +{ + @XmlAttribute + public String bind; + + @XmlAttribute(required = true) + public String path; + + @XmlElementRef + public List<AppDTO> apps; + + public WebServerDTO() + { + componentClassName = "org.apache.activemq.component.WebServerComponent"; + } +} http://git-wip-us.apache.org/repos/asf/activemq-6/blob/eb4f8354/activemq-journal/pom.xml ---------------------------------------------------------------------- diff --git a/activemq-journal/pom.xml b/activemq-journal/pom.xml index 1941313..7e61714 100644 --- a/activemq-journal/pom.xml +++ b/activemq-journal/pom.xml @@ -51,42 +51,4 @@ <scope>test</scope> </dependency> </dependencies> - - <profiles> - <profile> - <id>release</id> - <build> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-javadoc-plugin</artifactId> - <version>2.9</version> - <configuration> - <doclet>org.jboss.apiviz.APIviz</doclet> - <docletArtifact> - <groupId>org.jboss.apiviz</groupId> - <artifactId>apiviz</artifactId> - <version>1.3.2.GA</version> - </docletArtifact> - <useStandardDocletOptions>true</useStandardDocletOptions> - <minmemory>128m</minmemory> - <maxmemory>512m</maxmemory> - <quiet>false</quiet> - <aggregate>true</aggregate> - <excludePackageNames>org.apache.activemq.core:org.apache.activemq.utils</excludePackageNames> - </configuration> - <executions> - <execution> - <id>javadocs</id> - <goals> - <goal>jar</goal> - </goals> - </execution> - </executions> - </plugin> - </plugins> - </build> - </profile> - </profiles> - </project> http://git-wip-us.apache.org/repos/asf/activemq-6/blob/eb4f8354/activemq-selector/pom.xml ---------------------------------------------------------------------- diff --git a/activemq-selector/pom.xml b/activemq-selector/pom.xml index 8a07b17..6089f9e 100644 --- a/activemq-selector/pom.xml +++ b/activemq-selector/pom.xml @@ -32,43 +32,6 @@ </dependency> </dependencies> - <profiles> - <profile> - <id>release</id> - <build> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-javadoc-plugin</artifactId> - <version>2.9</version> - <configuration> - <doclet>org.jboss.apiviz.APIviz</doclet> - <docletArtifact> - <groupId>org.jboss.apiviz</groupId> - <artifactId>apiviz</artifactId> - <version>1.3.2.GA</version> - </docletArtifact> - <useStandardDocletOptions>true</useStandardDocletOptions> - <minmemory>128m</minmemory> - <maxmemory>512m</maxmemory> - <quiet>false</quiet> - <aggregate>true</aggregate> - <excludePackageNames>org.apache.activemq.core:org.apache.activemq.utils</excludePackageNames> - </configuration> - <executions> - <execution> - <id>javadocs</id> - <goals> - <goal>jar</goal> - </goals> - </execution> - </executions> - </plugin> - </plugins> - </build> - </profile> - </profiles> - <build> <resources> <resource> http://git-wip-us.apache.org/repos/asf/activemq-6/blob/eb4f8354/activemq-web/pom.xml ---------------------------------------------------------------------- diff --git a/activemq-web/pom.xml b/activemq-web/pom.xml new file mode 100644 index 0000000..8370fe8 --- /dev/null +++ b/activemq-web/pom.xml @@ -0,0 +1,47 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <parent> + <groupId>org.apache.activemq</groupId> + <artifactId>activemq-pom</artifactId> + <version>6.0.0-SNAPSHOT</version> + </parent> + + <artifactId>activemq-web</artifactId> + <packaging>jar</packaging> + <name>ActiveMQ6 Web</name> + + <properties> + <activemq.basedir>${project.basedir}/..</activemq.basedir> + </properties> + + <dependencies> + <dependency> + <groupId>org.apache.activemq</groupId> + <artifactId>activemq-dto</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>org.apache.activemq</groupId> + <artifactId>activemq-bootstrap</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>org.eclipse.jetty.aggregate</groupId> + <artifactId>jetty-all-server</artifactId> + </dependency> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.jboss.logmanager</groupId> + <artifactId>jboss-logmanager</artifactId> + <scope>test</scope> + </dependency> + </dependencies> + + +</project> http://git-wip-us.apache.org/repos/asf/activemq-6/blob/eb4f8354/activemq-web/src/main/java/org/apache/activemq/component/WebServerComponent.java ---------------------------------------------------------------------- diff --git a/activemq-web/src/main/java/org/apache/activemq/component/WebServerComponent.java b/activemq-web/src/main/java/org/apache/activemq/component/WebServerComponent.java new file mode 100644 index 0000000..95f58b4 --- /dev/null +++ b/activemq-web/src/main/java/org/apache/activemq/component/WebServerComponent.java @@ -0,0 +1,112 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.activemq.component; + +import org.apache.activemq.components.ExternalComponent; +import org.apache.activemq.dto.AppDTO; +import org.apache.activemq.dto.ComponentDTO; +import org.apache.activemq.dto.WebServerDTO; +import org.eclipse.jetty.server.Connector; +import org.eclipse.jetty.server.Server; +import org.eclipse.jetty.server.handler.DefaultHandler; +import org.eclipse.jetty.server.handler.HandlerList; +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 +{ + + private Server server; + private HandlerList handlers; + private WebServerDTO webServerConfig; + + @Override + public void configure(ComponentDTO config, String activemqHome) throws Exception + { + webServerConfig = (WebServerDTO)config; + String path = webServerConfig.path.startsWith("/") ? webServerConfig.path : "/" + webServerConfig.path; + URI uri = new URI(webServerConfig.bind); + server = new Server(); + org.eclipse.jetty.server.nio.SelectChannelConnector connector = new SelectChannelConnector(); + connector.setPort(uri.getPort()); + connector.setHost(uri.getHost()); + + server.setConnectors(new Connector[]{connector}); + + handlers = new HandlerList(); + + if (webServerConfig.apps != null) + { + for (AppDTO app : webServerConfig.apps) + { + deployWar(app.url, app.war, activemqHome, path); + } + } + + WebAppContext handler = new WebAppContext(); + handler.setContextPath("/"); + handler.setResourceBase(activemqHome + path); + handler.setLogUrlOnStart(true); + + ResourceHandler resourceHandler = new ResourceHandler(); + resourceHandler.setResourceBase(activemqHome + path); + resourceHandler.setDirectoriesListed(true); + resourceHandler.setWelcomeFiles(new String[]{"index.html"}); + + DefaultHandler defaultHandler = new DefaultHandler(); + defaultHandler.setServeIcon(false); + + handlers.addHandler(resourceHandler); + handlers.addHandler(defaultHandler); + server.setHandler(handlers); + } + + public void start() throws Exception + { + server.start(); + + System.out.println("Server started at " + webServerConfig.bind); + } + + public void stop() throws Exception + { + server.stop(); + } + + public boolean isStarted() + { + return false; + } + + private void deployWar(String url, String warURL, String activeMQHome, String path) + { + WebAppContext webapp = new WebAppContext(); + if (url.startsWith("/")) + { + webapp.setContextPath(url); + } + else + { + webapp.setContextPath("/" + url); + } + webapp.setWar(activeMQHome + path + "/" + warURL); + handlers.addHandler(webapp); + } +} http://git-wip-us.apache.org/repos/asf/activemq-6/blob/eb4f8354/activemq-web/src/test/java/org/apache/activemq/test/WebServerComponentTest.java ---------------------------------------------------------------------- diff --git a/activemq-web/src/test/java/org/apache/activemq/test/WebServerComponentTest.java b/activemq-web/src/test/java/org/apache/activemq/test/WebServerComponentTest.java new file mode 100644 index 0000000..c170635 --- /dev/null +++ b/activemq-web/src/test/java/org/apache/activemq/test/WebServerComponentTest.java @@ -0,0 +1,125 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.activemq.test; + +import io.netty.bootstrap.Bootstrap; +import io.netty.channel.Channel; +import io.netty.channel.ChannelHandlerContext; +import io.netty.channel.ChannelInitializer; +import io.netty.channel.EventLoopGroup; +import io.netty.channel.SimpleChannelInboundHandler; +import io.netty.channel.nio.NioEventLoopGroup; +import io.netty.channel.socket.nio.NioSocketChannel; +import io.netty.handler.codec.http.DefaultFullHttpRequest; +import io.netty.handler.codec.http.HttpClientCodec; +import io.netty.handler.codec.http.HttpContent; +import io.netty.handler.codec.http.HttpHeaders; +import io.netty.handler.codec.http.HttpMethod; +import io.netty.handler.codec.http.HttpObject; +import io.netty.handler.codec.http.HttpRequest; +import io.netty.handler.codec.http.HttpVersion; +import io.netty.util.CharsetUtil; +import org.apache.activemq.component.WebServerComponent; +import org.apache.activemq.dto.WebServerDTO; +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"); + private Bootstrap bootstrap; + private EventLoopGroup group; + + @Before + public void setupNetty() throws URISyntaxException + { + // Configure the client. + group = new NioEventLoopGroup(); + bootstrap = new Bootstrap(); + } + @Test + public void simpleServer() throws Exception + { + WebServerDTO webServerDTO = new WebServerDTO(); + webServerDTO.bind = "http://localhost:8161"; + webServerDTO.path = "webapps"; + WebServerComponent webServerComponent = new WebServerComponent(); + webServerComponent.configure(webServerDTO, "./src/test/resources/"); + webServerComponent.start(); + // Make the connection attempt. + CountDownLatch latch = new CountDownLatch(1); + final ClientHandler clientHandler = new ClientHandler(latch); + bootstrap.group(group).channel(NioSocketChannel.class).handler(new ChannelInitializer() + { + @Override + protected void initChannel(Channel ch) throws Exception + { + ch.pipeline().addLast(new HttpClientCodec()); + ch.pipeline().addLast(clientHandler); + } + }); + Channel ch = bootstrap.connect("localhost", 8161).sync().channel(); + + URI uri = new URI(URL); + // Prepare the HTTP request. + HttpRequest request = new DefaultFullHttpRequest(HttpVersion.HTTP_1_1, HttpMethod.GET, uri.getRawPath()); + request.headers().set(HttpHeaders.Names.HOST, "localhost"); + + + // Send the HTTP request. + ch.writeAndFlush(request); + assertTrue(latch.await(5, TimeUnit.SECONDS)); + assertEquals(clientHandler.body, "12345"); + // Wait for the server to close the connection. + ch.close(); + webServerComponent.stop(); + } + + class ClientHandler extends SimpleChannelInboundHandler<HttpObject> + { + private CountDownLatch latch; + private String body; + + public ClientHandler(CountDownLatch latch) + { + this.latch = latch; + } + + @Override + public void channelRead0(ChannelHandlerContext ctx, HttpObject msg) + { + if (msg instanceof HttpContent) + { + HttpContent content = (HttpContent) msg; + body = content.content().toString(CharsetUtil.UTF_8); + latch.countDown(); + } + } + + public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) + { + cause.printStackTrace(); + ctx.close(); + } + } +} http://git-wip-us.apache.org/repos/asf/activemq-6/blob/eb4f8354/activemq-web/src/test/resources/webapps/WebServerComponentTest.txt ---------------------------------------------------------------------- diff --git a/activemq-web/src/test/resources/webapps/WebServerComponentTest.txt b/activemq-web/src/test/resources/webapps/WebServerComponentTest.txt new file mode 100644 index 0000000..bd41cba --- /dev/null +++ b/activemq-web/src/test/resources/webapps/WebServerComponentTest.txt @@ -0,0 +1 @@ +12345 \ No newline at end of file http://git-wip-us.apache.org/repos/asf/activemq-6/blob/eb4f8354/activemq-website/pom.xml ---------------------------------------------------------------------- diff --git a/activemq-website/pom.xml b/activemq-website/pom.xml new file mode 100644 index 0000000..5340ffe --- /dev/null +++ b/activemq-website/pom.xml @@ -0,0 +1,96 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <parent> + <groupId>org.apache.activemq</groupId> + <artifactId>activemq-pom</artifactId> + <version>6.0.0-SNAPSHOT</version> + </parent> + + <artifactId>activemq-website</artifactId> + <packaging>jar</packaging> + <name>ActiveMQ6 Web</name> + + <dependencies> + <dependency> + <groupId>org.apache.activemq</groupId> + <artifactId>activemq-core-client</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>org.apache.activemq</groupId> + <artifactId>activemq-jms-client</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>org.apache.activemq</groupId> + <artifactId>activemq-server</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>org.apache.activemq</groupId> + <artifactId>activemq-jms-server</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>org.apache.activemq</groupId> + <artifactId>activemq-journal</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>org.apache.activemq</groupId> + <artifactId>activemq-selector</artifactId> + <version>${project.version}</version> + </dependency> + </dependencies> + + <properties> + <activemq.basedir>${project.basedir}/..</activemq.basedir> + </properties> + + <build> + <plugins> + <plugin> + <artifactId>maven-javadoc-plugin</artifactId> + <version>2.10.1</version> + <executions> + <execution> + <id>javadoc-jar</id> + <phase>package</phase> + <goals> + <goal>jar</goal> + </goals> + <configuration> + <doclet>org.jboss.apiviz.APIviz</doclet> + <docletArtifact> + <groupId>org.jboss.apiviz</groupId> + <artifactId>apiviz</artifactId> + <version>1.3.2.GA</version> + </docletArtifact> + <useStandardDocletOptions>true</useStandardDocletOptions> + <minmemory>128m</minmemory> + <maxmemory>512m</maxmemory> + <quiet>false</quiet> + <!-- switch on dependency-driven aggregation --> + <includeDependencySources>true</includeDependencySources> + + <dependencySourceIncludes> + <!-- include ONLY dependencies I control --> + <dependencySourceInclude>org.apache.activemq:activemq-core-client</dependencySourceInclude> + <dependencySourceInclude>org.apache.activemq:activemq-jms-client</dependencySourceInclude> + <dependencySourceInclude>org.apache.activemq:activemq-server</dependencySourceInclude> + <dependencySourceInclude>org.apache.activemq:activemq-jms-server</dependencySourceInclude> + <dependencySourceInclude>org.apache.activemq:activemq-journal</dependencySourceInclude> + <dependencySourceInclude>org.apache.activemq:activemq-selector</dependencySourceInclude> + </dependencySourceIncludes> + <quiet>false</quiet> + <aggregate>true</aggregate> + <excludePackageNames>org.apache.activemq.core:org.apache.activemq.utils</excludePackageNames> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> +</project> http://git-wip-us.apache.org/repos/asf/activemq-6/blob/eb4f8354/activemq-website/src/main/resources/images/activemq-logo.png ---------------------------------------------------------------------- diff --git a/activemq-website/src/main/resources/images/activemq-logo.png b/activemq-website/src/main/resources/images/activemq-logo.png new file mode 100644 index 0000000..d514448 Binary files /dev/null and b/activemq-website/src/main/resources/images/activemq-logo.png differ http://git-wip-us.apache.org/repos/asf/activemq-6/blob/eb4f8354/activemq-website/src/main/resources/index.html ---------------------------------------------------------------------- diff --git a/activemq-website/src/main/resources/index.html b/activemq-website/src/main/resources/index.html new file mode 100644 index 0000000..edb547a --- /dev/null +++ b/activemq-website/src/main/resources/index.html @@ -0,0 +1,64 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.1//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd"> +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + Architecture +--> +<html lang="en"> +<head> + <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> + <meta content="ActiveMQ's next generation of messaging" name="description"/> + <meta content="messaging,stomp,jms,activemq" name="keywords"/> + <meta content="ActiveMQ" name="author"/> + <link type="text/css" rel="stylesheet" href="styles/impact/css/pygmentize.css"/> + <link type="text/css" rel="stylesheet" href="styles/impact/css/site.css"/> + <title>ActiveMQ</title> +</head> +<body> +<div id="navigation"> + <div class="wrapper"> + <ul> + <li><a href="index.html">ActiveMQ 6.0</a></li> + <li><a href="community/developers.html">Developers</a></li> + <li><a href="community/index.html">Community</a></li> + <li><a href="download.html">Download</a></li> + </ul> <div></div> + </div> +</div> +<div id="overview"> + <div class="wrapper"> + <div class="logo"> + <img src="images/activemq-logo.png" alt="ActiveMQ logo"/> + </div> + <div class="message"> + <h1>ActiveMQ 6.0</h1> + ActiveMQ's next generation of messaging + + <div></div> + </div> + </div> +</div> +<div id="content"> + <div class="wrapper"> + <ul> + <li><a target="_blank" href="api/index.html">API</a></li> + <li><a target="_blank" href="user-manual/index.html">User Manual</a></li> + <li><a href="">Examples (to follow)</a></li> + </ul> + <div></div> + </div> +</div> +</body> +</html> http://git-wip-us.apache.org/repos/asf/activemq-6/blob/eb4f8354/activemq-website/src/main/resources/styles/impact/css/pygmentize.css ---------------------------------------------------------------------- diff --git a/activemq-website/src/main/resources/styles/impact/css/pygmentize.css b/activemq-website/src/main/resources/styles/impact/css/pygmentize.css new file mode 100644 index 0000000..d9b19d9 --- /dev/null +++ b/activemq-website/src/main/resources/styles/impact/css/pygmentize.css @@ -0,0 +1,127 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +.syntax .hll { background-color: #ffffcc } +.syntax { background: #f0f0f0; } +.syntax .c { color: #60a0b0; font-style: italic } /* Comment */ +.syntax .err { border: 1px solid #FF0000 } /* Error */ +.syntax .k { color: #007020; font-weight: bold } /* Keyword */ +.syntax .o { color: #666666 } /* Operator */ +.syntax .cm { color: #60a0b0; font-style: italic } /* Comment.Multiline */ +.syntax .cp { color: #007020 } /* Comment.Preproc */ +.syntax .c1 { color: #60a0b0; font-style: italic } /* Comment.Single */ +.syntax .cs { color: #60a0b0; background-color: #fff0f0 } /* Comment.Special */ +.syntax .gd { color: #A00000 } /* Generic.Deleted */ +.syntax .ge { font-style: italic } /* Generic.Emph */ +.syntax .gr { color: #FF0000 } /* Generic.Error */ +.syntax .gh { color: #000080; font-weight: bold } /* Generic.Heading */ +.syntax .gi { color: #00A000 } /* Generic.Inserted */ +.syntax .go { color: #808080 } /* Generic.Output */ +.syntax .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */ +.syntax .gs { font-weight: bold } /* Generic.Strong */ +.syntax .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ +.syntax .gt { color: #0040D0 } /* Generic.Traceback */ +.syntax .kc { color: #007020; font-weight: bold } /* Keyword.Constant */ +.syntax .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */ +.syntax .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */ +.syntax .kp { color: #007020 } /* Keyword.Pseudo */ +.syntax .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */ +.syntax .kt { color: #902000 } /* Keyword.Type */ +.syntax .m { color: #40a070 } /* Literal.Number */ +.syntax .s { color: #4070a0 } /* Literal.String */ +.syntax .na { color: #4070a0 } /* Name.Attribute */ +.syntax .nb { color: #007020 } /* Name.Builtin */ +.syntax .nc { color: #0e84b5; font-weight: bold } /* Name.Class */ +.syntax .no { color: #60add5 } /* Name.Constant */ +.syntax .nd { color: #555555; font-weight: bold } /* Name.Decorator */ +.syntax .ni { color: #d55537; font-weight: bold } /* Name.Entity */ +.syntax .ne { color: #007020 } /* Name.Exception */ +.syntax .nf { color: #06287e } /* Name.Function */ +.syntax .nl { color: #002070; font-weight: bold } /* Name.Label */ +.syntax .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */ +.syntax .nt { color: #062873; font-weight: bold } /* Name.Tag */ +.syntax .nv { color: #bb60d5 } /* Name.Variable */ +.syntax .ow { color: #007020; font-weight: bold } /* Operator.Word */ +.syntax .w { color: #bbbbbb } /* Text.Whitespace */ +.syntax .mf { color: #40a070 } /* Literal.Number.Float */ +.syntax .mh { color: #40a070 } /* Literal.Number.Hex */ +.syntax .mi { color: #40a070 } /* Literal.Number.Integer */ +.syntax .mo { color: #40a070 } /* Literal.Number.Oct */ +.syntax .sb { color: #4070a0 } /* Literal.String.Backtick */ +.syntax .sc { color: #4070a0 } /* Literal.String.Char */ +.syntax .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */ +.syntax .s2 { color: #4070a0 } /* Literal.String.Double */ +.syntax .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */ +.syntax .sh { color: #4070a0 } /* Literal.String.Heredoc */ +.syntax .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */ +.syntax .sx { color: #c65d09 } /* Literal.String.Other */ +.syntax .sr { color: #235388 } /* Literal.String.Regex */ +.syntax .s1 { color: #4070a0 } /* Literal.String.Single */ +.syntax .ss { color: #517918 } /* Literal.String.Symbol */ +.syntax .bp { color: #007020 } /* Name.Builtin.Pseudo */ +.syntax .vc { color: #bb60d5 } /* Name.Variable.Class */ +.syntax .vg { color: #bb60d5 } /* Name.Variable.Global */ +.syntax .vi { color: #bb60d5 } /* Name.Variable.Instance */ +.syntax .il { color: #40a070 } /* Literal.Number.Integer.Long */ + + +/* don't highlight errors */ +.syntax .err { + border: none; +} + +.syntax { + font-size: .9em; + font-family:Monaco,"Courier New","DejaVu Sans Mono","Bitstream Vera Sans Mono",monospace; + background-color: #F8F8FF; + + overflow:auto; + -moz-background-clip:border; + -moz-background-inline-policy:continuous; + -moz-background-origin:padding; + margin: 1em 0 1em 0; + border:1px solid #DDDDDD; + + border-top-left-radius: 8px; -webkit-border-top-left-radius: 8px; -moz-border-radius-topleft: 8px; + border-top-right-radius: 8px; -webkit-border-top-right-radius: 8px; -moz-border-radius-topright: 8px; + border-style: solid; border-width: 1px; border-color: #dedede !important; + padding: 1em; +} +.syntax .linenodiv { + background-color:#ECECEC; + border-right:1px solid #DDDDDD; + color:#AAAAAA; + padding: .5em; + text-align:right; +} +.syntax .highlight { +} +.syntax pre { + margin:0; + padding:0; + border: none; +} + +pre.syntax { + padding: .5em; + background-color: #F8F8FF; overflow:auto; +} + +.syntax code { + font-family:Monaco,"Courier New","DejaVu Sans Mono","Bitstream Vera Sans Mono",monospace; + font-size: 10pt; +} http://git-wip-us.apache.org/repos/asf/activemq-6/blob/eb4f8354/activemq-website/src/main/resources/styles/impact/css/site.css ---------------------------------------------------------------------- diff --git a/activemq-website/src/main/resources/styles/impact/css/site.css b/activemq-website/src/main/resources/styles/impact/css/site.css new file mode 100644 index 0000000..27d1a79 --- /dev/null +++ b/activemq-website/src/main/resources/styles/impact/css/site.css @@ -0,0 +1,235 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +body, html { + font-family:Georgia, Arial, sans-serif; + color: #666666; +} +body, html, table, tr, td, tbody { + padding:0; + margin:0; + vertical-align: top; +} +body { + padding-top: 20px; +} + +h1, h2, h3, h4, h5, h6 { + font-family: 'Graublau Web', Helvetica, sans-serif; + overflow: visible; + color: #993333; +} + +h2 { + border-top: 4px solid #E0E0E0 !important; + margin-top: 1.5em !important; + padding-top: 0.5em !important; +} + +p { margin-bottom:0px; } + +a { + color: #700; + font-weight:bold; + text-decoration: none; +} + +a:hover { + color: #ff3333; + text-decoration: underline; + } + +img { + border: none; +/* + padding-right:2em +*/ +} + +.wrapper { min-width: 762px; width: 762px; margin: 0 auto; } + +#navigation { width: 100%; float: left; + font-family: Helvetica,Verdana,Arial,sans-serif; + background: black; + text-align:center; + padding: 8px 0 8px 0; + color: #b55; + font-size: 10pt; + font-weight: bold; + position: absolute; + top: 0px; +} +#navigation a { color: white; } +#navigation ul { display: block; margin:0; padding:0; } +#navigation li { list-style-type: none; display: inline; margin:0 5px 0 5px;} + +#overview { width: 100%; padding-top:20px} +#overview div.message { + font-size: 11pt; + margin-top: -20px; + padding-left: 120px; + width: 350px; +} +#overview div.message h1{ margin-bottom: 5px; display:none; } +#overview div.message p{ margin-top: 0px; padding-bottom:14px; } + +#spot { width: 100%; float: left; + margin-top: 15px; + background:transparent url(../images/spot-banner.gif) repeat-x scroll 0 0; + height: 277px; +} +#spot div.title { + text-align:center; height:25px; + text-align:center; padding-top: 2px; + color: white; font-size: 10pt; font-weight: bold; + font-family: HelveticaNeue,"Helvetica Neue",Helvetica,Arial,Verdana,sans-serif; +} +#spot div.content table { + width: 100%; text-align:center; + color: black; font-size: 10pt; +} + +#spot a:hover {text-decoration: none; } + +#spot div.spot-balloon { + background:transparent url( ../../../images/spot-get-involved.gif ) no-repeat; + background-position:center; + height: 121px; + text-align:left; + padding-top: 25px; + padding-left: 35px; +} + +#spot div.spot-balloon li { +/* + list-style: none; +*/ + list-style: disc; +} + +/* +#spot div.spot-balloon { + height: 120px; + text-align:left; + padding-top: 20px; + padding-left: 15px; +} +*/ + +#content { width: 100%; float: left; padding-bottom: 20px; } +#content .wrapper { min-width: 700px; width: 700px; margin: 0 auto; padding-top: 1em} +#content div.left { + float:left; + width:200px; + text-align:right; + font-size: 18pt; + clear:both; +} +#content h1 { + font-size: 18pt; +} +#content div.right { + float:right; + width:450px; + text-align:left; +} + +#blog { width: 100%; float: left; } +#blog .wrapper { min-width: 600px; width: 600px; margin: 0 auto; } +#blog h1 { + font-family: HelveticaNeue,"Helvetica Neue",Helvetica,Arial,Verdana,sans-serif; + font-size: 18pt; color: #993333; +} +#blog h2 { + border-bottom: thin dashed #DDD; + font-size: 16pt; + margin-bottom: 5px; +} +#blog div.post p { + padding-left: 10px; +} +#blog div.post .details { + padding-top: 5px; + color: #ccc; + font-size: 10pt; + font-family: HelveticaNeue,"Helvetica Neue",Helvetica,Arial,Verdana,sans-serif; +} + +#content .post h2 { + margin-bottom:5px; +} +#content .post .details { + color: #ccc; + font-size: 10pt; + font-family: HelveticaNeue,"Helvetica Neue",Helvetica,Arial,Verdana,sans-serif; + margin-top:0px; +} + +code { + font-size: .9em; + font-family: 'Droid Sans Mono', 'Courier New', monospace !important; +} +pre { + background-color: #F8F8FF; + + overflow:auto; + -moz-background-clip:border; + -moz-background-inline-policy:continuous; + -moz-background-origin:padding; + margin: 1em 0 1em 0; + border:1px solid #DDDDDD; + + border-top-left-radius: 8px; -webkit-border-top-left-radius: 8px; -moz-border-radius-topleft: 8px; + border-top-right-radius: 8px; -webkit-border-top-right-radius: 8px; -moz-border-radius-topright: 8px; + border-style: solid; border-width: 1px; border-color: #dedede !important; + padding: 1em; +} +pre code { + font-family:Monaco,"Courier New","DejaVu Sans Mono","Bitstream Vera Sans Mono",monospace; + font-weight:normal; + font-style:normal; +} +div.compare { width: 700px; } +div.compare div.compare-left { float:left; width:340px; padding:5px; margin-top: 15px; } +div.compare div.compare-right { float:right; width:340px; padding:5px; margin-top: 15px; } +div.compare div h3 { + margin-left: 15px; + padding: 5px 15px; + display: inline; + font-size: .8em; + color: #666; + + border-top: 1px solid #ccc; -moz-border-top-colors: #ccc white white #e5e5e5; + border-left: 1px solid #ccc; -moz-border-left-colors: #ccc white white #e5e5e5; + border-right: 1px solid #ccc;-moz-border-right-colors: #ccc white white #e5e5e5; + border-top-left-radius: 8px; -webkit-border-top-left-radius: 8px; -moz-border-radius-topleft: 8px; + border-top-right-radius: 8px; -webkit-border-top-right-radius: 8px; -moz-border-radius-topright: 8px; +} +div.compare div div { + margin: 5px 0px 0px 0px; +} + +.clear { + clear:both; +} + +.wide div.compare div.compare-left { float:none; width:700px; } +.wide div.compare div.compare-right { float:none; width:700px; } + +.hide { + display:none; +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/activemq-6/blob/eb4f8354/distribution/activemq/pom.xml ---------------------------------------------------------------------- diff --git a/distribution/activemq/pom.xml b/distribution/activemq/pom.xml index 9355c3d..8d60c60 100644 --- a/distribution/activemq/pom.xml +++ b/distribution/activemq/pom.xml @@ -109,6 +109,11 @@ </dependency> <dependency> <groupId>org.apache.activemq</groupId> + <artifactId>activemq-web</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>org.apache.activemq</groupId> <artifactId>activemq-core-client</artifactId> <version>${project.version}</version> </dependency> @@ -155,7 +160,25 @@ <groupId>org.apache.activemq</groupId> <artifactId>activemq-client</artifactId> </dependency> - + <dependency> + <groupId>org.apache.activemq</groupId> + <artifactId>activemq-website</artifactId> + <version>6.0.0-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.apache.activemq</groupId> + <artifactId>activemq-website</artifactId> + <version>6.0.0-SNAPSHOT</version> + <classifier>javadoc</classifier> + </dependency> + <dependency> + <groupId>org.eclipse.jetty.aggregate</groupId> + <artifactId>jetty-all-server</artifactId> + </dependency> + <dependency> + <groupId>org.apache.geronimo.specs</groupId> + <artifactId>geronimo-servlet_3.0_spec</artifactId> + </dependency> <!-- javadoc --> <dependency> <groupId>org.apache.activemq</groupId> http://git-wip-us.apache.org/repos/asf/activemq-6/blob/eb4f8354/distribution/activemq/src/main/assembly/dep.xml ---------------------------------------------------------------------- diff --git a/distribution/activemq/src/main/assembly/dep.xml b/distribution/activemq/src/main/assembly/dep.xml index e3323d2..1a60ed2 100644 --- a/distribution/activemq/src/main/assembly/dep.xml +++ b/distribution/activemq/src/main/assembly/dep.xml @@ -45,9 +45,11 @@ <include>com.google.guava:guava</include> <include>javax.inject:javax.inject</include> <include>com.fasterxml.jackson.core:jackson-*</include> + <include>org.eclipse.jetty.aggregate:jetty-all-server</include> + <include>org.apache.geronimo.specs:geronimo-servlet_3.0_spec</include> </includes> <excludes> - <exclude>*:javadoc</exclude> + <exclude>org.apache.activemq:activemq-website</exclude> </excludes> <outputDirectory>lib</outputDirectory> <unpack>false</unpack> @@ -65,17 +67,23 @@ </includes> </unpackOptions> </dependencySet> - <!-- javadoc --> - <dependencySet> - <includes> - <include>org.apache.activemq:activemq-core-client:*:javadoc</include> - <include>org.apache.activemq:activemq-server:*:javadoc</include> - <include>org.apache.activemq:activemq-jms-server:*:javadoc</include> - <include>org.apache.activemq:activemq-jms-client:*:javadoc</include> - </includes> - <outputDirectory>docs/api/${artifact.artifactId}</outputDirectory> - <unpack>true</unpack> - </dependencySet> + <dependencySet> + <includes> + <include>org.apache.activemq:activemq-website</include> + </includes> + <excludes> + <exclude>org.apache.activemq:activemq-website:jar:javadoc</exclude> + </excludes> + <outputDirectory>web</outputDirectory> + <unpack>true</unpack> + </dependencySet> + <dependencySet> + <includes> + <include>org.apache.activemq:activemq-website:jar:javadoc</include> + </includes> + <outputDirectory>web/api</outputDirectory> + <unpack>true</unpack> + </dependencySet> </dependencySets> <fileSets> <!-- schema --> @@ -94,15 +102,15 @@ <directory>src/main/resources</directory> <outputDirectory>/</outputDirectory> <lineEnding>keep</lineEnding> - <includes> - <include>bin/*</include> - <include>config/**</include> - <include>licenses/*</include> - </includes> + <excludes> + <exclude>**/target/**</exclude> + <exclude>**/**/*.iml</exclude> + <exclude>**/**/*.dat</exclude> + </excludes> </fileSet> <fileSet> <directory>../../examples</directory> - <outputDirectory>examples</outputDirectory> + <outputDirectory>web/examples</outputDirectory> <lineEnding>keep</lineEnding> <excludes> <exclude>**/target/**</exclude> @@ -113,13 +121,8 @@ <!-- docs --> <!--todo, this is crap, there must be better jdocbook assembly integration--> <fileSet> - <directory>../../docs/user-manual/target/docbook/publish/en</directory> - <outputDirectory>docs/user-manual</outputDirectory> - <lineEnding>keep</lineEnding> - </fileSet> - <fileSet> - <directory>../../docs/quickstart-guide/target/docbook/publish/en</directory> - <outputDirectory>docs/quickstart-guide</outputDirectory> + <directory>../../docs/user-manual/target/docbook/publish/en/html/</directory> + <outputDirectory>web/user-manual</outputDirectory> <lineEnding>keep</lineEnding> </fileSet> <fileSet> http://git-wip-us.apache.org/repos/asf/activemq-6/blob/eb4f8354/distribution/activemq/src/main/resources/config/clustered/bootstrap.xml ---------------------------------------------------------------------- diff --git a/distribution/activemq/src/main/resources/config/clustered/bootstrap.xml b/distribution/activemq/src/main/resources/config/clustered/bootstrap.xml index 974d7b6..698da46 100644 --- a/distribution/activemq/src/main/resources/config/clustered/bootstrap.xml +++ b/distribution/activemq/src/main/resources/config/clustered/bootstrap.xml @@ -18,12 +18,15 @@ <broker xmlns="http://activemq.org/schema"> - <core configuration="file:${activemq.home}/config/clustered/activemq-configuration.xml"></core> - <jms configuration="file:${activemq.home}/config/clustered/activemq-jms.xml"></jms> + <core configuration="file:${activemq.home}/config/clustered/activemq-configuration.xml"/> + + <jms configuration="file:${activemq.home}/config/clustered/activemq-jms.xml"/> <basic-security/> <naming bindAddress="localhost" port="1099" rmiBindAddress="localhost" rmiPort="1098"/> + <web bind="http://localhost:8161" path="web"/> + </broker> http://git-wip-us.apache.org/repos/asf/activemq-6/blob/eb4f8354/distribution/activemq/src/main/resources/config/non-clustered/bootstrap.xml ---------------------------------------------------------------------- diff --git a/distribution/activemq/src/main/resources/config/non-clustered/bootstrap.xml b/distribution/activemq/src/main/resources/config/non-clustered/bootstrap.xml index d539a5e..dbec706 100644 --- a/distribution/activemq/src/main/resources/config/non-clustered/bootstrap.xml +++ b/distribution/activemq/src/main/resources/config/non-clustered/bootstrap.xml @@ -18,12 +18,15 @@ <broker xmlns="http://activemq.org/schema"> - <core configuration="file:${activemq.home}/config/non-clustered/activemq-configuration.xml"></core> - <jms configuration="file:${activemq.home}/config/non-clustered/activemq-jms.xml"></jms> + <core configuration="file:${activemq.home}/config/non-clustered/activemq-configuration.xml"/> + + <jms configuration="file:${activemq.home}/config/non-clustered/activemq-jms.xml"/> <basic-security/> <naming bindAddress="localhost" port="1099" rmiBindAddress="localhost" rmiPort="1098"/> + <web bind="http://localhost:8161" path="web"/> + </broker> http://git-wip-us.apache.org/repos/asf/activemq-6/blob/eb4f8354/distribution/activemq/src/main/resources/config/replicated/bootstrap.xml ---------------------------------------------------------------------- diff --git a/distribution/activemq/src/main/resources/config/replicated/bootstrap.xml b/distribution/activemq/src/main/resources/config/replicated/bootstrap.xml index e94e5f7..1bf29ed 100644 --- a/distribution/activemq/src/main/resources/config/replicated/bootstrap.xml +++ b/distribution/activemq/src/main/resources/config/replicated/bootstrap.xml @@ -18,12 +18,15 @@ <broker xmlns="http://activemq.org/schema"> - <core configuration="file:${activemq.home}/config/replicated/activemq-configuration.xml"></core> - <jms configuration="file:${activemq.home}/config/replicated/activemq-jms.xml"></jms> + <core configuration="file:${activemq.home}/config/replicated/activemq-configuration.xml"/> + + <jms configuration="file:${activemq.home}/config/replicated/activemq-jms.xml"/> <basic-security/> <naming bindAddress="localhost" port="1099" rmiBindAddress="localhost" rmiPort="1098"/> + <web bind="http://localhost:8161" path="web"/> + </broker> http://git-wip-us.apache.org/repos/asf/activemq-6/blob/eb4f8354/distribution/activemq/src/main/resources/config/shared-store/bootstrap.xml ---------------------------------------------------------------------- diff --git a/distribution/activemq/src/main/resources/config/shared-store/bootstrap.xml b/distribution/activemq/src/main/resources/config/shared-store/bootstrap.xml index 0da0da1..0da0234 100644 --- a/distribution/activemq/src/main/resources/config/shared-store/bootstrap.xml +++ b/distribution/activemq/src/main/resources/config/shared-store/bootstrap.xml @@ -18,12 +18,15 @@ <broker xmlns="http://activemq.org/schema"> - <core configuration="file:${activemq.home}/config/shared-store/activemq-configuration.xml"></core> - <jms configuration="file:${activemq.home}/config/shared-store/activemq-jms.xml"></jms> + <core configuration="file:${activemq.home}/config/shared-store/activemq-configuration.xml"/> + + <jms configuration="file:${activemq.home}/config/shared-store/activemq-jms.xml"/> <basic-security/> <naming bindAddress="localhost" port="1099" rmiBindAddress="localhost" rmiPort="1098"/> + <web bind="http://localhost:8161" path="web"/> + </broker> http://git-wip-us.apache.org/repos/asf/activemq-6/blob/eb4f8354/docs/user-manual/pom.xml ---------------------------------------------------------------------- diff --git a/docs/user-manual/pom.xml b/docs/user-manual/pom.xml index 54ccfbf..cf693f2 100644 --- a/docs/user-manual/pom.xml +++ b/docs/user-manual/pom.xml @@ -84,9 +84,10 @@ </pluginRepositories> <profiles> - <!-- mvn compile --> + + <!-- mvn compile -Phtml --> <profile> - <id>all</id> + <id>html</id> <activation> <activeByDefault>true</activeByDefault> </activation> @@ -100,30 +101,19 @@ <configuration> <formats> <format> - <formatName>pdf</formatName> - <stylesheetResource>classpath:/xslt/org/jboss/pdf.xsl</stylesheetResource> - <finalName>${docname}.pdf</finalName> - </format> - <format> <formatName>html</formatName> <stylesheetResource>classpath:/xslt/org/jboss/xhtml.xsl</stylesheetResource> <finalName>index.html</finalName> </format> - <format> - <formatName>html_single</formatName> - <stylesheetResource>classpath:/xslt/org/jboss/xhtml-single.xsl</stylesheetResource> - <finalName>index.html</finalName> - </format> </formats> </configuration> </plugin> </plugins> </build> </profile> - - <!-- mvn compile -Phtml --> + <!-- mvn compile --> <profile> - <id>html</id> + <id>all</id> <activation> <activeByDefault>false</activeByDefault> </activation> @@ -132,15 +122,25 @@ <plugin> <groupId>org.jboss.maven.plugins</groupId> <artifactId>maven-jdocbook-plugin</artifactId> - <version>2.2.1</version> + <version>2.3.5</version> <extensions>true</extensions> <configuration> <formats> <format> + <formatName>pdf</formatName> + <stylesheetResource>classpath:/xslt/org/jboss/pdf.xsl</stylesheetResource> + <finalName>${docname}.pdf</finalName> + </format> + <format> <formatName>html</formatName> <stylesheetResource>classpath:/xslt/org/jboss/xhtml.xsl</stylesheetResource> <finalName>index.html</finalName> </format> + <format> + <formatName>html_single</formatName> + <stylesheetResource>classpath:/xslt/org/jboss/xhtml-single.xsl</stylesheetResource> + <finalName>index.html</finalName> + </format> </formats> </configuration> </plugin> @@ -159,7 +159,7 @@ <plugin> <groupId>org.jboss.maven.plugins</groupId> <artifactId>maven-jdocbook-plugin</artifactId> - <version>2.2.1</version> + <version>2.3.5</version> <extensions>true</extensions> </plugin> </plugins> @@ -177,7 +177,7 @@ <plugin> <groupId>org.jboss.maven.plugins</groupId> <artifactId>maven-jdocbook-plugin</artifactId> - <version>2.2.1</version> + <version>2.3.5</version> <extensions>true</extensions> <configuration> <formats> http://git-wip-us.apache.org/repos/asf/activemq-6/blob/eb4f8354/pom.xml ---------------------------------------------------------------------- diff --git a/pom.xml b/pom.xml index b49a9a4..c9281c0 100644 --- a/pom.xml +++ b/pom.xml @@ -358,6 +358,17 @@ <artifactId>tjws</artifactId> <version>${resteasy.version}</version> </dependency> + <!-- needed for jetty web support--> + <dependency> + <groupId>org.eclipse.jetty.aggregate</groupId> + <artifactId>jetty-all-server</artifactId> + <version>7.6.9.v20130131</version> + </dependency> + <dependency> + <groupId>org.apache.geronimo.specs</groupId> + <artifactId>geronimo-servlet_3.0_spec</artifactId> + <version>1.0</version> + </dependency> <!-- needed to compile the tests --> <dependency> <groupId>junit</groupId> @@ -471,6 +482,8 @@ </activation> <modules> <module>activemq-dto</module> + <module>activemq-web</module> + <module>activemq-website</module> <module>activemq-bootstrap</module> <module>activemq-commons</module> <module>activemq-selector</module> @@ -496,6 +509,8 @@ <id>maven-release</id> <modules> <module>activemq-dto</module> + <module>activemq-web</module> + <module>activemq-website</module> <module>activemq-bootstrap</module> <module>activemq-commons</module> <module>activemq-selector</module> @@ -521,6 +536,8 @@ <id>release</id> <modules> <module>activemq-dto</module> + <module>activemq-web</module> + <module>activemq-website</module> <module>activemq-bootstrap</module> <module>activemq-commons</module> <module>activemq-selector</module> @@ -548,6 +565,8 @@ <id>hudson-tests</id> <modules> <module>activemq-dto</module> + <module>activemq-web</module> + <module>activemq-website</module> <module>activemq-bootstrap</module> <module>activemq-commons</module> <module>activemq-selector</module> @@ -586,6 +605,7 @@ <id>jenkins-fast-tests</id> <modules> <module>activemq-dto</module> + <module>activemq-web</module> <module>activemq-bootstrap</module> <module>activemq-commons</module> <module>activemq-selector</module> @@ -620,6 +640,7 @@ <id>examples</id> <modules> <module>activemq-dto</module> + <module>activemq-web</module> <module>activemq-bootstrap</module> <module>activemq-commons</module> <module>activemq-selector</module> http://git-wip-us.apache.org/repos/asf/activemq-6/blob/eb4f8354/readme.txt ---------------------------------------------------------------------- diff --git a/readme.txt b/readme.txt deleted file mode 100644 index e69de29..0000000
