Initial commit for the Asciidoctor based documentation, as submodule 'manual'
Project: http://git-wip-us.apache.org/repos/asf/servicemix/repo Commit: http://git-wip-us.apache.org/repos/asf/servicemix/commit/138042d4 Tree: http://git-wip-us.apache.org/repos/asf/servicemix/tree/138042d4 Diff: http://git-wip-us.apache.org/repos/asf/servicemix/diff/138042d4 Branch: refs/heads/master Commit: 138042d416ce44112d4524f33c3bcfb26492e6fd Parents: 4f9d97f Author: Michael Gfeller <[email protected]> Authored: Thu May 18 18:54:41 2017 +0200 Committer: Krzysztof Sobkowiak <[email protected]> Committed: Fri May 26 21:38:03 2017 +0200 ---------------------------------------------------------------------- .gitignore | 2 + manual/README.txt | 36 +++ manual/pom.xml | 321 +++++++++++++++++++ .../activemq-guide/_activemq-camel-example.adoc | 137 ++++++++ .../activemq-guide/_activemq-guide.adoc | 23 ++ .../asciidoc/activemq-guide/_introduction.adoc | 74 +++++ .../asciidoc/activemq-guide/activemq-guide.adoc | 21 ++ .../activiti-guide/_activiti-camel-example.adoc | 218 +++++++++++++ .../activiti-guide/_activiti-guide.adoc | 23 ++ .../asciidoc/activiti-guide/_introduction.adoc | 59 ++++ .../asciidoc/activiti-guide/activiti-guide.adoc | 21 ++ .../main/asciidoc/camel-guide/_camel-guide.adoc | 33 ++ .../main/asciidoc/camel-guide/_deployment.adoc | 45 +++ .../camel-guide/_installing-components.adoc | 49 +++ .../asciidoc/camel-guide/_introduction.adoc | 52 +++ .../camel-guide/_osgi-bundle-blueprint.adoc | 127 ++++++++ .../camel-guide/_osgi-bundle-spring.adoc | 41 +++ .../asciidoc/camel-guide/_plain-blueprint.adoc | 35 ++ .../asciidoc/camel-guide/_plain-spring.adoc | 49 +++ .../asciidoc/camel-guide/_troubleshooting.adoc | 27 ++ .../main/asciidoc/camel-guide/camel-guide.adoc | 21 ++ .../camel-guide/plain-blueprint-template.xml | 12 + .../asciidoc/camel-guide/plain-blueprint.xml | 16 + .../camel-guide/plain-spring-template.xml | 17 + .../main/asciidoc/camel-guide/plain-spring.xml | 21 ++ manual/src/main/asciidoc/contribute.adoc | 34 ++ manual/src/main/asciidoc/docinfo-footer.html | 5 + manual/src/main/asciidoc/docinfo.html | 24 ++ manual/src/main/asciidoc/documentation.adoc | 55 ++++ manual/src/main/asciidoc/images/ASF-logo.png | Bin 0 -> 16803 bytes manual/src/main/asciidoc/images/bg.png | Bin 0 -> 244 bytes .../asciidoc/images/camel-sample-deploy.png | Bin 0 -> 8195 bytes .../main/asciidoc/images/camel-sample-log.png | Bin 0 -> 6199 bytes manual/src/main/asciidoc/images/console.png | Bin 0 -> 47099 bytes manual/src/main/asciidoc/images/eip.jpg | Bin 0 -> 46831 bytes manual/src/main/asciidoc/images/eip150x198.jpg | Bin 0 -> 25354 bytes .../enterpreise-soa-best-practices-krafzig.jpg | Bin 0 -> 34558 bytes ...preise-soa-best-practices-krafzig150x197.jpg | Bin 0 -> 24175 bytes .../images/featureslist-grep-webconsole.png | Bin 0 -> 6593 bytes .../src/main/asciidoc/images/featureslist.png | Bin 0 -> 34823 bytes .../src/main/asciidoc/images/ibsen_2nd_meap.png | Bin 0 -> 35986 bytes .../src/main/asciidoc/images/ibsen_cover150.jpg | Bin 0 -> 10422 bytes .../asciidoc/images/log-display-exception.png | Bin 0 -> 46012 bytes manual/src/main/asciidoc/images/log-display.png | Bin 0 -> 54998 bytes .../src/main/asciidoc/images/log-set-debug.png | Bin 0 -> 49773 bytes manual/src/main/asciidoc/images/logodesign.png | Bin 0 -> 62118 bytes .../asciidoc/images/loosely-coupled-kaye.jpg | Bin 0 -> 39914 bytes .../images/loosely-coupled-kaye150x208.jpg | Bin 0 -> 31723 bytes manual/src/main/asciidoc/images/new-logo.png | Bin 0 -> 43139 bytes .../main/asciidoc/images/osgi-list-pipegrep.png | Bin 0 -> 18724 bytes manual/src/main/asciidoc/images/osgi-list.png | Bin 0 -> 37926 bytes manual/src/main/asciidoc/images/osgilist.png | Bin 0 -> 111595 bytes manual/src/main/asciidoc/images/pulier.jpg | Bin 0 -> 131543 bytes .../src/main/asciidoc/images/pulier150x188.jpg | Bin 0 -> 16200 bytes manual/src/main/asciidoc/images/rademakers2.png | Bin 0 -> 8814 bytes .../src/main/asciidoc/images/samplebundle.png | Bin 0 -> 8152 bytes .../src/main/asciidoc/images/soa-concepts.jpg | Bin 0 -> 46889 bytes .../asciidoc/images/soa-concepts150x212.jpg | Bin 0 -> 32614 bytes manual/src/main/asciidoc/images/soa-dp-erl.jpg | Bin 0 -> 13728 bytes .../main/asciidoc/images/soa-dp-erl150x195.jpg | Bin 0 -> 29953 bytes .../asciidoc/images/soa-fieldguide-xml-ws.jpg | Bin 0 -> 56212 bytes .../images/soa-fieldguide-xml-ws150x197.jpg | Bin 0 -> 30384 bytes manual/src/main/asciidoc/images/sojbi.jpg | Bin 0 -> 37471 bytes .../src/main/asciidoc/images/sojbi150x190.jpg | Bin 0 -> 23630 bytes manual/src/main/asciidoc/images/start-linux.png | Bin 0 -> 53229 bytes .../src/main/asciidoc/images/start-windows.png | Bin 0 -> 11941 bytes .../images/understanding-soa-ws-newcomer.jpg | Bin 0 -> 39971 bytes .../understanding-soa-ws-newcomer150x202.jpg | Bin 0 -> 24450 bytes .../asciidoc/images/webservice-platform.jpg | Bin 0 -> 38417 bytes .../images/webservice-platform150x196.jpg | Bin 0 -> 23882 bytes .../images/ws-soa-cloud-mamager-guide-barry.jpg | Bin 0 -> 38839 bytes .../ws-soa-cloud-mamager-guide-barry150x225.jpg | Bin 0 -> 27111 bytes manual/src/main/asciidoc/index.adoc | 32 ++ .../src/main/asciidoc/quickstart/_activemq.adoc | 80 +++++ manual/src/main/asciidoc/quickstart/_camel.adoc | 78 +++++ .../src/main/asciidoc/quickstart/_console.adoc | 95 ++++++ .../src/main/asciidoc/quickstart/_features.adoc | 55 ++++ .../main/asciidoc/quickstart/_installation.adoc | 72 +++++ .../main/asciidoc/quickstart/_introduction.adoc | 21 ++ .../main/asciidoc/quickstart/_quickstart.adoc | 31 ++ .../src/main/asciidoc/quickstart/_summary.adoc | 20 ++ .../main/asciidoc/quickstart/quickstart.adoc | 21 ++ .../src/main/asciidoc/resources/_resources.adoc | 72 +++++ .../src/main/asciidoc/resources/resources.adoc | 21 ++ .../main/asciidoc/user-guide/_introduction.adoc | 22 ++ .../user-guide/_technology-selection.adoc | 51 +++ .../main/asciidoc/user-guide/_user-guide.adoc | 24 ++ .../user-guide/_what-is-servicemix.adoc | 157 +++++++++ .../main/asciidoc/user-guide/user-guide.adoc | 21 ++ .../groovy/CreateKarafCommandsAdocFile.groovy | 25 ++ 90 files changed, 2496 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/servicemix/blob/138042d4/.gitignore ---------------------------------------------------------------------- diff --git a/.gitignore b/.gitignore index be46753..534d4cc 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,10 @@ +generated-docs-karaf .settings .classpath .project target .idea +.vscode *.i?? velocity.log .DS_Store \ No newline at end of file http://git-wip-us.apache.org/repos/asf/servicemix/blob/138042d4/manual/README.txt ---------------------------------------------------------------------- diff --git a/manual/README.txt b/manual/README.txt new file mode 100644 index 0000000..79b6920 --- /dev/null +++ b/manual/README.txt @@ -0,0 +1,36 @@ +/* + * 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. + */ + +ServiceMix Documentation +======================== + +Overview +-------- +The documentation is written in the Asciidoctor format, and processed using the Maven Asciidoctor plugin. + +Building the documentation project +---------------------------------- +`mvn clean install` will build the documentation and create a static website in `target/generated-docs`. + +The build process will also create files for all Karaf commands based on the correct Karaf version defined in the pom file. It +appears that the Karaf manual is no longer deployed as a Maven artifact to the central repository. Consequently, no copy of the user +and developmemt guides are included in this documentation. Instead, the link to the current Karaf documentation is provided. + +Publishing the documentation to the website +------------------------------------------- +If you're an Apache ServiceMix committer, you can publish a new copy of the documentation pages with this command: +`mvn clean install scm-publish:publish-scm` \ No newline at end of file http://git-wip-us.apache.org/repos/asf/servicemix/blob/138042d4/manual/pom.xml ---------------------------------------------------------------------- diff --git a/manual/pom.xml b/manual/pom.xml new file mode 100644 index 0000000..e1003df --- /dev/null +++ b/manual/pom.xml @@ -0,0 +1,321 @@ +<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"> + + <!-- + 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. + --> + <parent> + <groupId>org.apache.servicemix.parent</groupId> + <artifactId>assemblies-parent</artifactId> + <version>7.0.1-SNAPSHOT</version> + <relativePath>../assemblies-parent/pom.xml</relativePath> + </parent> + + <modelVersion>4.0.0</modelVersion> + + <groupId>org.apache.servicemix</groupId> + <artifactId>manual</artifactId> + <packaging>pom</packaging> + + <name>Apache ServiceMix :: Manual</name> + + <description>Manual and Documentation</description> + + <properties> + <servicemix.version>${project.version}</servicemix.version> + <servicemix.docs.location>7.x</servicemix.docs.location> + <asciidoctorj.version>1.5.5</asciidoctorj.version> + <asciidoctor-maven-plugin.version>1.5.5</asciidoctor-maven-plugin.version> + <asciidoc.sourceDirectory>src/main/asciidoc</asciidoc.sourceDirectory> + <!-- required to generate karaf commands documentation --> + <felix.bundlerepository.version>2.0.8</felix.bundlerepository.version> + <felix.gogo.version>0.16.2</felix.gogo.version> + <osgi.version>6.0.0</osgi.version> + <osgi.compendium.version>5.0.0</osgi.compendium.version> + <karaf.commands.dir>${asciidoc.sourceDirectory}/generated-docs-karaf/</karaf.commands.dir> + </properties> + + <build> + <plugins> + <plugin> + <artifactId>maven-clean-plugin</artifactId> + <version>3.0.0</version> + <configuration> + <filesets> + <fileset> + <directory>${karaf.commands.dir}</directory> + <includes> + <include>**/*.adoc</include> + </includes> + <followSymlinks>false</followSymlinks> + </fileset> + </filesets> + </configuration> + </plugin> + <plugin> + <groupId>org.asciidoctor</groupId> + <artifactId>asciidoctor-maven-plugin</artifactId> + <version>${asciidoctor-maven-plugin.version}</version> + <dependencies> + <dependency> + <groupId>org.asciidoctor</groupId> + <artifactId>asciidoctorj</artifactId> + <version>${asciidoctorj.version}</version> + </dependency> + </dependencies> + <configuration> + <sourceDirectory>${asciidoc.sourceDirectory}</sourceDirectory> + <imagesDir>./images</imagesDir> + <doctype>article</doctype> + <!-- Attributes common to all output formats --> + <attributes> + <project-version>${project.version}</project-version> + <servicemix-version>${servicemix.version}</servicemix-version> + <camel-version>${camel.version}</camel-version> + </attributes> + </configuration> + <executions> + <execution> + <id>output-html</id> + <phase>process-resources</phase> + <goals> + <goal>process-asciidoc</goal> + </goals> + <configuration> + <backend>html5</backend> + <sourceHighlighter>coderay</sourceHighlighter> + <!--preserveDirectories>true</preserveDirectories--> + <attributes> + <toc>left@</toc> + <toclevels>5@</toclevels> + <last-update-label>Generated </last-update-label> + <icons>font</icons> + <sectanchors>true</sectanchors> + <idprefix/> + <idseparator>-</idseparator> + <docinfo1>true</docinfo1> + <nofooter/> + </attributes> + </configuration> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.apache.karaf.tooling</groupId> + <artifactId>karaf-maven-plugin</artifactId> + <version>${karaf.version}</version> + <executions> + <execution> + <id>generate-commands-help</id> + <phase>generate-resources</phase> + <goals> + <goal>commands-generate-help</goal> + </goals> + <configuration> + <format>asciidoc</format> + <targetFolder>${karaf.commands.dir}</targetFolder> + <classLoader>plugin</classLoader> + </configuration> + </execution> + </executions> + <dependencies> + <!-- Commands for help generation --> + <dependency> + <groupId>org.apache.karaf.shell</groupId> + <artifactId>org.apache.karaf.shell.commands</artifactId> + <version>${karaf.version}</version> + </dependency> + <dependency> + <groupId>org.apache.karaf.shell</groupId> + <artifactId>org.apache.karaf.shell.core</artifactId> + <version>${karaf.version}</version> + </dependency> + <dependency> + <groupId>org.apache.karaf.log</groupId> + <artifactId>org.apache.karaf.log.core</artifactId> + <version>${karaf.version}</version> + </dependency> + <dependency> + <groupId>org.apache.karaf.obr</groupId> + <artifactId>org.apache.karaf.obr.core</artifactId> + <version>${karaf.version}</version> + </dependency> + <dependency> + <groupId>org.apache.karaf.bundle</groupId> + <artifactId>org.apache.karaf.bundle.core</artifactId> + <version>${karaf.version}</version> + </dependency> + <dependency> + <groupId>org.apache.karaf.bundle</groupId> + <artifactId>org.apache.karaf.bundle.springstate</artifactId> + <version>${karaf.version}</version> + </dependency> + <dependency> + <groupId>org.apache.karaf.service</groupId> + <artifactId>org.apache.karaf.service.core</artifactId> + <version>${karaf.version}</version> + </dependency> + <dependency> + <groupId>org.apache.karaf.system</groupId> + <artifactId>org.apache.karaf.system.core</artifactId> + <version>${karaf.version}</version> + </dependency> + <dependency> + <groupId>org.apache.karaf.shell</groupId> + <artifactId>org.apache.karaf.shell.ssh</artifactId> + <version>${karaf.version}</version> + </dependency> + <dependency> + <groupId>org.apache.karaf.web</groupId> + <artifactId>org.apache.karaf.web.core</artifactId> + <version>${karaf.version}</version> + </dependency> + <dependency> + <groupId>org.apache.karaf.wrapper</groupId> + <artifactId>org.apache.karaf.wrapper.core</artifactId> + <version>${karaf.version}</version> + </dependency> + <dependency> + <groupId>org.apache.karaf.instance</groupId> + <artifactId>org.apache.karaf.instance.core</artifactId> + <version>${karaf.version}</version> + </dependency> + <dependency> + <groupId>org.apache.karaf.diagnostic</groupId> + <artifactId>org.apache.karaf.diagnostic.core</artifactId> + <version>${karaf.version}</version> + </dependency> + <dependency> + <groupId>org.apache.karaf.features</groupId> + <artifactId>org.apache.karaf.features.command</artifactId> + <version>${karaf.version}</version> + </dependency> + <dependency> + <groupId>org.apache.karaf.jaas</groupId> + <artifactId>org.apache.karaf.jaas.command</artifactId> + <version>${karaf.version}</version> + </dependency> + <dependency> + <groupId>org.apache.karaf.scr</groupId> + <artifactId>org.apache.karaf.scr.command</artifactId> + <version>${karaf.version}</version> + </dependency> + <dependency> + <groupId>org.apache.karaf.jdbc</groupId> + <artifactId>org.apache.karaf.jdbc.core</artifactId> + <version>${karaf.version}</version> + </dependency> + <dependency> + <groupId>org.apache.karaf.jms</groupId> + <artifactId>org.apache.karaf.jms.core</artifactId> + <version>${karaf.version}</version> + </dependency> + <dependency> + <groupId>org.apache.karaf.jndi</groupId> + <artifactId>org.apache.karaf.jndi.core</artifactId> + <version>${karaf.version}</version> + </dependency> + <dependency> + <groupId>org.apache.karaf.config</groupId> + <artifactId>org.apache.karaf.config.core</artifactId> + <version>${karaf.version}</version> + </dependency> + <dependency> + <groupId>org.apache.karaf.http</groupId> + <artifactId>org.apache.karaf.http.core</artifactId> + <version>${karaf.version}</version> + </dependency> + <dependency> + <groupId>org.apache.karaf.kar</groupId> + <artifactId>org.apache.karaf.kar.core</artifactId> + <version>${karaf.version}</version> + </dependency> + <dependency> + <groupId>org.apache.karaf.package</groupId> + <artifactId>org.apache.karaf.package.core</artifactId> + <version>${karaf.version}</version> + </dependency> + <dependency> + <groupId>org.apache.karaf.profile</groupId> + <artifactId>org.apache.karaf.profile.core</artifactId> + <version>${karaf.version}</version> + </dependency> + <dependency> + <groupId>org.apache.karaf.scheduler</groupId> + <artifactId>org.apache.karaf.scheduler.core</artifactId> + <version>${karaf.version}</version> + </dependency> + <dependency> + <groupId>org.apache.karaf.subsystem</groupId> + <artifactId>org.apache.karaf.subsystem.core</artifactId> + <version>${karaf.version}</version> + </dependency> + <!-- Additional Required Dependencies --> + <dependency> + <groupId>org.apache.felix</groupId> + <artifactId>org.apache.felix.gogo.runtime</artifactId> + <version>${felix.gogo.version}</version> + </dependency> + <dependency> + <groupId>org.osgi</groupId> + <artifactId>org.osgi.core</artifactId> + <version>${osgi.version}</version> + </dependency> + <dependency> + <groupId>org.osgi</groupId> + <artifactId>org.osgi.compendium</artifactId> + <version>${osgi.compendium.version}</version> + </dependency> + <dependency> + <groupId>org.apache.felix</groupId> + <artifactId>org.apache.felix.bundlerepository</artifactId> + <version>${felix.bundlerepository.version}</version> + </dependency> + </dependencies> + </plugin> + <plugin> + <groupId>org.codehaus.groovy.maven</groupId> + <artifactId>gmaven-plugin</artifactId> + <version>1.0</version> + <executions> + <execution> + <id>create-commands-adoc-file</id> + <phase>generate-resources</phase> + <goals> + <goal>execute</goal> + </goals> + <configuration> + <source>${basedir}/src/main/groovy/CreateKarafCommandsAdocFile.groovy</source> + <properties> + <karafCommandsDir>${karaf.commands.dir}</karafCommandsDir> + </properties> + </configuration> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-scm-publish-plugin</artifactId> + <version>1.0-beta-2</version> + <configuration> + <checkinComment>[scm-publish] Updating ServiceMix ${servicemix.docs.location} documentation contents</checkinComment> + <pubScmUrl>scm:svn:https://svn.apache.org/repos/asf/servicemix/site/production/docs/${servicemix.docs.location}</pubScmUrl> + <content>${project.build.directory}/generated-docs</content> + </configuration> + </plugin> + </plugins> + </build> + +</project> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/servicemix/blob/138042d4/manual/src/main/asciidoc/activemq-guide/_activemq-camel-example.adoc ---------------------------------------------------------------------- diff --git a/manual/src/main/asciidoc/activemq-guide/_activemq-camel-example.adoc b/manual/src/main/asciidoc/activemq-guide/_activemq-camel-example.adoc new file mode 100644 index 0000000..b8e189b --- /dev/null +++ b/manual/src/main/asciidoc/activemq-guide/_activemq-camel-example.adoc @@ -0,0 +1,137 @@ +// +// Licensed 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. +// + +== Using ActiveMQ with Camel + +This sections is based on the activemq-camel-blueprint example in the ServiceMix distribution. + +=== Objectives + +The objectives of this sections are to explain how to + +* define Camel routes as an OSGi bundle using Blueprint, +* publish messages to an ActiveMQ queue, +* consume messages from an ActiveMQ queue, +* build and install the OSGi bundle, +* write messages to the log. + +=== Prerequisites + +For this example, it is assumed that ServiceMix, Java and Maven are installed locally on your machine. Further, it is assumed that +ServiceMix is up and running. + +=== ActiveMQ and ServiceMix Web Consoles + +The ActiveMQ web console can be used to inspect and manage ActiveMQ configuration, queues and topics. If ServiceMix is running +locally, the console can be accessed at http://localhost:8181/activemqweb/. + +If the ActiveMQ web console has not been installed previously, install the feature from the Karaf console: + +[source,text] +---- +karaf@root> feature:install activemq-web-console +---- + +Note that the ServiceMix console is accessible at http://localhost:8181/system/console/, with default username smx, and password smx. +This feature can be installed from the Karaf console using + +[source,text] +---- +karaf@root>feature:install webconsole +---- + +Inspect the ActiveMQ web console before running the example. Note that initially, there are no queues defined. + +=== Blueprint Example Explained + +The following Blueprint XML-file is based on the example included in the ServiceMix distribution. Configuration related to the +custom transformation bean and handling of persistent properties have been removed for simplicity. + +[source,xml,options="nowrap"] +---- +<blueprint + xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" + xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd"> + + <camelContext xmlns="http://camel.apache.org/schema/blueprint"> + <route> + <from uri="timer://myTimer?fixedRate=true&period=2000" /> <!--1--> + <bean ref="myTransform" method="transform"/> <!--2--> <!--7--> + <to uri="activemq:queue:LOG.ME" /> <!--3--> + </route> + <route> + <from uri="activemq:queue:LOG.ME" /> <!--4--> + <to uri="log:ExampleActiveMQRouterBlueprint" /> <!--5--> + </route> + </camelContext> + + <cm:property-placeholder persistent-id="org.apache.servicemix.examples"> <!--6--> + <cm:default-properties> + <cm:property name="prefix" value="ActiveMQ-Blueprint-Example"/> + </cm:default-properties> + </cm:property-placeholder> + + <bean id="myTransform" class="org.apache.servicemix.examples.activemq.MyTransform"> <!--7--> + <property name="prefix" value="${prefix}" /> + </bean> + +</blueprint> +---- +<1> A Camel timer endpoint generates a heartbeat event every 2000ms, generating a new message. +<2> The timer message is transformed by the _transform_ method of the bean referenced by _myTransform_. +<3> The message is sent to the LOG.ME queue on the ActiveMQ broker. This queue is created automatically. +<4> The message is consumed from the LOG.ME queue on the ActiveMQ broker. +<5> A Camel log endpoint sends the message to the Jakarta commons logger. By default, the log is written to +_c:\bin\apache-servicemix-7.0.0\data\log\servicemix.log. +<6> The persistent property _prefix_ has a default value of _ActiveMQ-Blueprint-Example_ and can be configured in the file +_org.apache.servicemix.examples.cfg_ if desired. +<7> The bean _myTransform_ references the class _org.apache.servicemix.examples.activemq.MyTransform_. This class has one +configurable property, _prefix_. The expression _${prefix}_ links it to the corresponding persistent cm:property. + +The class _org.apache.servicemix.examples.activemq.MyTransform_ transforms the message, using the _prefix_, some text and +the current date. It writes to both a logger and System.out. + +=== Building, Running, and Modifying the Example + +Open a command window and navigate to the example directory, e.g. _c:\bin\apache-servicemix-7.0.0\examples\activemq\activemq-camel-blueprint\_. + +WARNING: If you are using ServiceMix 7.0.0 download the pom.xml-file from https://issues.apache.org/jira/browse/SM-3225 and replace the +pom.xml-file in the examples folder of the distribution with this. + +Build the bundle by executing `mvn clean install`. After a successfull build, install the bundle from the Karaf console using + +[source,text] +---- +karaf@root> feature:install examples-activemq-camel-blueprint +---- + +Almost immediately, log messages begin to appear in the Karaf console. + +Open the ActiveMQ web console at http://localhost:8181/activemqweb/ and inspect the Queues: the queue _LOG.ME_ has automatically +been created. + +Edit the class _MyTransform_ and set `verbose=false;` to suppress the messages written to the Karaf console. Rebuild the bundle, and +reinstall it. Note that the bundle needs to be uninstalled before it can be re-installed: + +[source,text] +---- +karaf@root> feature:uninstall examples-activemq-camel-blueprint +karaf@root> feature:install examples-activemq-camel-blueprint +---- + +TIP: The relation between the feature name, _examples-activemq-camel-blueprint_, and the Maven artifact coordinates is defined in +the file _servicemix-examples-7.0.0-features.xml_ in the ServiceMix distribution. + http://git-wip-us.apache.org/repos/asf/servicemix/blob/138042d4/manual/src/main/asciidoc/activemq-guide/_activemq-guide.adoc ---------------------------------------------------------------------- diff --git a/manual/src/main/asciidoc/activemq-guide/_activemq-guide.adoc b/manual/src/main/asciidoc/activemq-guide/_activemq-guide.adoc new file mode 100644 index 0000000..63842c1 --- /dev/null +++ b/manual/src/main/asciidoc/activemq-guide/_activemq-guide.adoc @@ -0,0 +1,23 @@ +// +// Licensed 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. +// + +// This document is intended to be included in other documents. +// No title heading! +// The top level heading in all included documents should not be a document title. + +include::_introduction.adoc[] + +include::_activemq-camel-example.adoc[] + + http://git-wip-us.apache.org/repos/asf/servicemix/blob/138042d4/manual/src/main/asciidoc/activemq-guide/_introduction.adoc ---------------------------------------------------------------------- diff --git a/manual/src/main/asciidoc/activemq-guide/_introduction.adoc b/manual/src/main/asciidoc/activemq-guide/_introduction.adoc new file mode 100644 index 0000000..7603e9f --- /dev/null +++ b/manual/src/main/asciidoc/activemq-guide/_introduction.adoc @@ -0,0 +1,74 @@ +// +// Licensed 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. +// + +== Introducing ActiveMQ + +Apache ActiveMQ is the most popular and powerful open source messaging and Integration Patterns provider. Apache ActiveMQ is fast, +supports many Cross Language Clients and Protocols and many advanced features while fully supporting JMS 1.1 and J2EE 1.4. Apache +ActiveMQ is released under the Apache 2.0 License. + +=== ActiveMQ Supports + +==== Easy communication via Cross Language Clients + +* ActiveMQ C++ Clients +* Ajax +* C Integration +* CMS +* Delphi and FreePascal +* dot Net +* Perl +* PHP +* Pike +* Python +* Ruby +* WebSockets +* JMS to JMS Bridge + +==== Several Protocols + +* AMQP +* OpenWire +* REST +* RSS and Atom +* Stomp +* WSIF +* WS Notification +* XMPP + +=== Using ActiveMQ from ServiceMix + +To start using ActiveMQ from your code, simply get hold of the connection pool declared in the activemq.xml file. You can also +utilize ActiveMQ from Camel via the camel-jms component. + +=== When should I use ActiveMQ? + +Whenever you have a unit of work or payload that you could process asynchronously, you would like to have multiple recipients, +concurrent competing recipients to scale or leverage multiple processing units. If you want to spread load across multiple +system boundaries. You want to cluster or provide fail over and messaging security, you have long running flows. + +In any of these instances it would be strongly suggested you evaluate what a scalable and secure messaging solution can bring to the table. + +=== Common use cases + +Integration with other systems, since you can pass messages in and out of ActiveMQ from pretty much any programming language +it is very simple to start integrating heterogeneous environments. + +Providing an event driven architecture. You can develop your solutions based on actions as opposed to looking for data or +relying on completely synchronous behaviour. + +Providing infrastructure for messaging across large distances, leverage the network connectors and broker networks to integrate +for example geographically different data centres. + + http://git-wip-us.apache.org/repos/asf/servicemix/blob/138042d4/manual/src/main/asciidoc/activemq-guide/activemq-guide.adoc ---------------------------------------------------------------------- diff --git a/manual/src/main/asciidoc/activemq-guide/activemq-guide.adoc b/manual/src/main/asciidoc/activemq-guide/activemq-guide.adoc new file mode 100644 index 0000000..2d24d46 --- /dev/null +++ b/manual/src/main/asciidoc/activemq-guide/activemq-guide.adoc @@ -0,0 +1,21 @@ +// +// Licensed 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. +// + +// This is standalone document with a Asciidoctor document title. +// This document is not intended to be included in other documents. += ActiveMQ Guide +Apache Software Foundation +:numbered: + +include::activemq-guide/_activemq-guide.adoc[] http://git-wip-us.apache.org/repos/asf/servicemix/blob/138042d4/manual/src/main/asciidoc/activiti-guide/_activiti-camel-example.adoc ---------------------------------------------------------------------- diff --git a/manual/src/main/asciidoc/activiti-guide/_activiti-camel-example.adoc b/manual/src/main/asciidoc/activiti-guide/_activiti-camel-example.adoc new file mode 100644 index 0000000..3afe005 --- /dev/null +++ b/manual/src/main/asciidoc/activiti-guide/_activiti-camel-example.adoc @@ -0,0 +1,218 @@ +// +// Licensed 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. +// + +== Using Activiti with Camel + +In this example we show an example how Activiti can be used with Camel in ServiceMix through +http://aries.apache.org/modules/blueprint.html[Blueprint Container]. + +Before being able to run Activiti with Camel, you have to install some additional features into the container first to add support +for the Activiti. + +[source,text] +---- +karaf@root>feature:install activiti +---- + +By default in ServiceMix, the Activiti Engine uses an embedded (local) H2 database. It the can be found under + +[source,text] +---- +${karaf.data}/activiti/database. +---- + +The Activiti engine is the entry point for starting new process instances, deploying new processes, querying for user tasks, and +more. Process data is stored in the H2 database. + + +=== Blueprint configuration + +Let's see how you can set up the Camel context in a Blueprint configuration. As you can see, +the Camel integration is specified with the Activiti Engine in the same Blueprint configuration: + + +[source,xml,options="nowrap"] +---- +<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" + xmlns:camel="http://camel.apache.org/schema/blueprint"> + + <camelContext id="camelContext" xmlns="http://camel.apache.org/schema/blueprint"> <!--1--> + <packageScan> + <package>org.apache.servicemix.examples.activiti</package> <!--2--> + </packageScan> + </camelContext> + + <reference id="runtimeService" interface="org.activiti.engine.RuntimeService" /> <!--3--> + + <service interface="org.activiti.camel.ContextProvider"> <!--4--> + <bean class="org.activiti.camel.SimpleContextProvider"> + <argument value="OrderProcess"/> + <argument ref="camelContext"/> + </bean> + </service> + +</blueprint> +---- +<1> This Camel context contains the routes that interact with our BPMN process. +<2> Here we instruct the Camel context to scan the classpath in org.apache.servicemix.examples.activiti. +<3> Obtain a reference to Activiti's RuntimeService - this reference will automatically be picked up by the subsequent Activiti +Camel component definition. +<4> Register a context provider to link the Camel context to the OrderProcess definition. Doing this will allow your BPMN process to +communicate with the Camel routes using the ${camel} expression. + +=== Route Definition + + +[source,java,options="nowrap"] +---- + +public class ActivitiRouteBuilder extends RouteBuilder { + + private final Helper helper = new Helper(); + + @Override + public void configure() throws Exception { + /* + * This route will start a new OrderProcess instance. Using the + * PROCESS_KEY_PROPERTY, we are assigning a business key to our process + * to allow for easier correlation in later processing steps. We are + * also sending a Map containing additional variables to add to the + * process instance. + */ + from("file:var/activiti-camel/order") + .setBody(bean(helper)) + .setProperty(PROCESS_KEY_PROPERTY, simple("file:name")) + .to("activiti:OrderProcess") + .log("Process to handle incoming order file has been started (process instance id ${body})"); + + /* + * This route will notify a running OrderProcess of an order delivery + * event. Here too, we are setting the PROCESS_KEY_PROPERTY to + * correlate the delivery message with right order process instance. + */ + from("file:var/activiti-camel/delivery") + .log("Notifying process about delivery for order ${file:name}") + .setBody(bean(helper)) + .setProperty(PROCESS_KEY_PROPERTY, simple("file:name")) + .to("activiti:OrderProcess:receiveDelivery"); + + /* + * The BPMN process can also trigger Camel routes as part of the + * process. In these routes, the variables that you added to the + * process are available as Exchange properties. The next two routes + * will be triggered while processing the order and the order delivery. + */ + from("activiti:OrderProcess:processOrder?copyVariablesToProperties=true") + .log("Processing order ${property.orderid} created on ${property.timestamp}") + .log(" original message: ${property.message}"); + + from("activiti:OrderProcess:processDelivery?copyVariablesToProperties=true") + .log("Processing delivery for order ${property.orderid} created on ${property.timestamp}") + .log(" original message: ${property.message}"); + } + + /* + * A few helper methods used for routing + */ + public static final class Helper { + + /* + * This method will extract information from the Exchange (using Camel + * annotations) and put them in a Map that will be used for setting up + * the process' variables. + */ + @Handler + public Map getProcessVariables(@Body String body, + @Header(Exchange.FILE_NAME) String filename, + @Simple("${date:now:yyyy-MM-dd kk:mm:ss}") String timestamp) { + Map<String, Object> variables = new HashMap<String, Object>(); + variables.put("message", body); + variables.put("orderid", filename); + variables.put("timestamp", timestamp); + return variables; + } + } +} +---- + +=== Process definition + +[source,xml,options="nowrap"] +---- + +<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:activiti="http://activiti.org/bpmn" + xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" + xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" + xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" + typeLanguage="http://www.w3.org/2001/XMLSchema" + expressionLanguage="http://www.w3.org/1999/XPath" + targetNamespace="http://www.activiti.org/test"> + + <process id="OrderProcess" isExecutable="true"> + + <startEvent id="start"/> + + <sequenceFlow id="flow1" sourceRef="start" targetRef="processOrder"/> + + <serviceTask id="processOrder" activiti:delegateExpression="${camel}"/> + + <sequenceFlow id="flow2" sourceRef="processOrder" targetRef="receiveDelivery"/> + + <receiveTask id="receiveDelivery" name="Wait for Delivery" /> + + <sequenceFlow id="flow3" sourceRef="receiveDelivery" targetRef="processDelivery"/> + + <serviceTask id="processDelivery" activiti:delegateExpression="${camel}"/> + + <sequenceFlow id="flow4" sourceRef="processDelivery" targetRef="end"/> + + <endEvent id="end"/> + + </process> + +</definitions> +---- + +The process presented here above define a simple order process. It processes the incoming orders and subsequently waits for its +delivery. Once the delivery notification has been received, another bit of processing occurs before the business process ends. + +This process defines the BPMN definition and is automatically deployed as soon as bundle is started: + +[source,text] +---- +start --> processOrder --> waitForDelivery --> processDelivery --> end +---- + +When the service task is executed by the Activiti Engine, the execution is delegated to the CamelBehaviour class, which will send a +message containing all process variables to an Activiti endpoint defined in the Camel context. This behavior is obtained through the +use the delegateExpression in the Java service task + +=== Building and running the example + +. Open a command prompt, and navigate to the directory containing the example, _examples/activiti/activiti-camel_. +. Build the bundle using `mvn clean install`. +. In the Karaf console, install the bundle using `bundle:install mvn:org.apache.servicemix.examples/activiti-camel/{servicemix-version}`. Note the bundle id that is returned. +. In the Karaf console, start the bundle using `bundle:start <id>`, where the id is the bundle id returned from the preceeding command. +. Create a possibly empty file representing a new order in the newly created directory _var/activiti-camel/order_ under your ServiceMix installation directory. The file name corresponds to the order id. +. In the log, you will find a message similar to + + _Process to handle incoming order file has been started (process instance id {orderid=1234, message=, timestamp=2017-05-09 20:35:33})_ +. At that point, you have a running process instance for order 1234 that is waiting for delivery. +. To notify the process about the delivery, you have to create a file with the same name in the _var/activiti-camel/delivery_ directory. +. As soon as the Camel route picks up the file, you will find messages similar to + + _Notifying process about delivery for order 1234_ + + and + + _Processing delivery for order 1234 created on 2017-05-09 20:43:09_ + + in the log. \ No newline at end of file http://git-wip-us.apache.org/repos/asf/servicemix/blob/138042d4/manual/src/main/asciidoc/activiti-guide/_activiti-guide.adoc ---------------------------------------------------------------------- diff --git a/manual/src/main/asciidoc/activiti-guide/_activiti-guide.adoc b/manual/src/main/asciidoc/activiti-guide/_activiti-guide.adoc new file mode 100644 index 0000000..ce664e1 --- /dev/null +++ b/manual/src/main/asciidoc/activiti-guide/_activiti-guide.adoc @@ -0,0 +1,23 @@ +// +// Licensed 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. +// + +// This document is intended to be included in other documents. +// No title heading! +// The top level heading in all included documents should not be a document title. + +include::_introduction.adoc[] + +include::_activiti-camel-example.adoc[] + + http://git-wip-us.apache.org/repos/asf/servicemix/blob/138042d4/manual/src/main/asciidoc/activiti-guide/_introduction.adoc ---------------------------------------------------------------------- diff --git a/manual/src/main/asciidoc/activiti-guide/_introduction.adoc b/manual/src/main/asciidoc/activiti-guide/_introduction.adoc new file mode 100644 index 0000000..b262da4 --- /dev/null +++ b/manual/src/main/asciidoc/activiti-guide/_introduction.adoc @@ -0,0 +1,59 @@ +// +// Licensed 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. +// + +== Introducing Activiti + +Activiti is a BPMN 2.0 process-engine framework that implements the BPMN 2.0 specification. It's able to perform BPMN 2.0 functions +including deploy process definitions, start new process instances, and execute user tasks. Its core is a super-fast and rock-solid +BPMN 2 process engine for Java. + + +=== Activiti Engine + +This is the heart of the Activiti project. It's a Java process engine that runs BPMN 2 processes natively. It will have the +following key properties: + +* Allows user updates to be combined with process updates in a single transaction +* Runs on any Java environment like Spring, JTA, standalone with any form of transaction demarcation +* Easy to get up and running with the setup utility +* Built to support the cloud scalability from the ground up +* Very simple to add new custom activity types and complete dedicated process languages +* Transactional timers +* Asynchronous continuations +* Hidden event listeners for decoupling software technical details from business level diagram +* Ability to test process executions in isolation in a plain unit test + +== Goal of this guide + +The goal of this guide is to look into the details for using Activiti inside ServiceMix: + +* create a project +* write and debug a simple process + +== Examples + +The Apache ServiceMix distributions also contains an Activiti example. You can find this example in the _examples/activiti_ directory. + +== More information about Activiti + +More information about Activiti itself, can be found on http://activiti.org/. + +There's also book available about Activiti + +* Tijs Rademakers. (July 2012). _Activiti in Action_. Greenwich, Manning. ISBN: 9781617290121. + +image::rademakers2.png[Activiti in Action] + + + http://git-wip-us.apache.org/repos/asf/servicemix/blob/138042d4/manual/src/main/asciidoc/activiti-guide/activiti-guide.adoc ---------------------------------------------------------------------- diff --git a/manual/src/main/asciidoc/activiti-guide/activiti-guide.adoc b/manual/src/main/asciidoc/activiti-guide/activiti-guide.adoc new file mode 100644 index 0000000..ddf17f1 --- /dev/null +++ b/manual/src/main/asciidoc/activiti-guide/activiti-guide.adoc @@ -0,0 +1,21 @@ +// +// Licensed 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. +// + +// This is standalone document with a Asciidoctor document title. +// This document is not intended to be included in other documents. += Activiti Guide +Apache Software Foundation +:numbered: + +include::activiti-guide/_activiti-guide.adoc[] http://git-wip-us.apache.org/repos/asf/servicemix/blob/138042d4/manual/src/main/asciidoc/camel-guide/_camel-guide.adoc ---------------------------------------------------------------------- diff --git a/manual/src/main/asciidoc/camel-guide/_camel-guide.adoc b/manual/src/main/asciidoc/camel-guide/_camel-guide.adoc new file mode 100644 index 0000000..c6a16e2 --- /dev/null +++ b/manual/src/main/asciidoc/camel-guide/_camel-guide.adoc @@ -0,0 +1,33 @@ +// +// Licensed 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. +// + +// This document is intended to be included in other documents. +// No title heading! +// The top level heading in all included documents should not be a document title. + +include::_introduction.adoc[] + +include::_deployment.adoc[] + +include::_plain-spring.adoc[] + +include::_plain-blueprint.adoc[] + +include::_osgi-bundle-spring.adoc[] + +include::_osgi-bundle-blueprint.adoc[] + +include::_installing-components.adoc[] + +include::_troubleshooting.adoc[] \ No newline at end of file http://git-wip-us.apache.org/repos/asf/servicemix/blob/138042d4/manual/src/main/asciidoc/camel-guide/_deployment.adoc ---------------------------------------------------------------------- diff --git a/manual/src/main/asciidoc/camel-guide/_deployment.adoc b/manual/src/main/asciidoc/camel-guide/_deployment.adoc new file mode 100644 index 0000000..87db117 --- /dev/null +++ b/manual/src/main/asciidoc/camel-guide/_deployment.adoc @@ -0,0 +1,45 @@ +// +// Licensed 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. +// + +== Deployment Options + +There are a few different ways to deploy Camel routes on ServiceMix: + +* deploy routes in a plain Blueprint XML file +* deploy routes in a plain Spring XML file +* deploy a bundle containing a Blueprint XML file +* deploy a bundle containing a Spring XML file + +=== Benefits and drawbacks + +==== Plain XML or OSGi bundles + +Choose a plain XML file: + +* if you want to get routes deployed as quickly as possible. + + All you need for developing routes is a simple text editor, no compilation and building is required. +* if you prefer the XML syntax over the Java of Scala DSL. + +Choose an OSGi bundle: + +* if you want to package helper classes together with your route definitions. +* if you prefer developing routes in the Java or Scala DSL. + + The RouteBuilder implementations can be packaged inside the bundle. + +==== Blueprint or Spring + +Choose Blueprint if you want the best possible integration with the OSGi Framework and Service Registy. The Blueprint specification +has been developed specifically for the OSGi Framework by the OSGi Alliance. + +Choose Spring if you already invested in Spring for creating and running Camel routes. http://git-wip-us.apache.org/repos/asf/servicemix/blob/138042d4/manual/src/main/asciidoc/camel-guide/_installing-components.adoc ---------------------------------------------------------------------- diff --git a/manual/src/main/asciidoc/camel-guide/_installing-components.adoc b/manual/src/main/asciidoc/camel-guide/_installing-components.adoc new file mode 100644 index 0000000..db90e43 --- /dev/null +++ b/manual/src/main/asciidoc/camel-guide/_installing-components.adoc @@ -0,0 +1,49 @@ +// +// Licensed 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. +// + +== Installing Components [[camel-installing]] + +Camel comes with almost 200 components, so you can imagine that we don't install all of them by default. This section shows you how +to find available components and how to install them at runtime. + +=== List available components + +Camel components are available as installable features. You can look at the full list of available features using the +_feature:list_ command, using _grep_ to limit things down to features related to Camel: + +[source,text,subs="attributes"] +---- +karaf@root> feature:list | grep camel +camel-xmlsecurity | {camel-version} | | Uninstalled | camel-{camel-version} | +camel-xmpp | {camel-version} | | Uninstalled | camel-{camel-version} | +camel-xstream | {camel-version} | x | Started | camel-{camel-version} | +camel-yammer | {camel-version} | | Uninstalled | camel-{camel-version} | +camel-zipfile | {camel-version} | | Uninstalled | camel-{camel-version} | +---- + +=== Install and uninstalling components + +You can use _feature:install_ to install any component on the list. + +An example: to install the _camel-cache_ component +[source,text] +---- +karaf@root> feature:install camel-cache +---- + +Similarly, you can also uninstall components that you're no longer using with _feature:uninstall_ +[source,text] +---- +karaf@root> feature:uninstall camel-cache +---- http://git-wip-us.apache.org/repos/asf/servicemix/blob/138042d4/manual/src/main/asciidoc/camel-guide/_introduction.adoc ---------------------------------------------------------------------- diff --git a/manual/src/main/asciidoc/camel-guide/_introduction.adoc b/manual/src/main/asciidoc/camel-guide/_introduction.adoc new file mode 100644 index 0000000..3d56279 --- /dev/null +++ b/manual/src/main/asciidoc/camel-guide/_introduction.adoc @@ -0,0 +1,52 @@ +// +// Licensed 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. +// + +== Introduction + +Apache Camel is a powerful open source integration framework based on known Enterprise Integration Patterns with powerful Bean +Integration. + +=== Camel in ServiceMix + +In ServiceMix, Apache Camel is like our swiss army knife for creating integration solutions. It allows using XML or a +Java/Scala-based DSL to express your routes, comes with almost 200 optional components, has powerful and versatile Java bean +integration, error handling, and tons of other features. + +Apache Camel is installed by default if you first start the container. We also have out-of-the-box hot-deployment support for both +Spring and Blueprint to make it easy to deploy your own Camel routes, as well as optionally installable features for all the +available Camel components. + +=== Goal of this guide + +The goal of this guide is to look into the details for using Camel inside ServiceMix: + +* deployment options +* installing additional components + +=== Examples + +The Apache ServiceMix distribution also contain a set of Camel examples. You can find these examples in the _examples/camel_ +directory. + +=== More information about Camel + +More information about Camel itself can be found on http://camel.apache.org. + +There's also a great book available about Camel. Its second edition is planned to be published in July 2017: + +* Ibsen, Claus, and Anstey, Jonathan. (July 2017). _https://www.manning.com/books/camel-in-action-second-edition[Camel in Action, +Second Edition]_. Manning Publications. ISBN: 9781617292934. + +image::ibsen_2nd_meap.png[Camel in Action, Second Edition] + http://git-wip-us.apache.org/repos/asf/servicemix/blob/138042d4/manual/src/main/asciidoc/camel-guide/_osgi-bundle-blueprint.adoc ---------------------------------------------------------------------- diff --git a/manual/src/main/asciidoc/camel-guide/_osgi-bundle-blueprint.adoc b/manual/src/main/asciidoc/camel-guide/_osgi-bundle-blueprint.adoc new file mode 100644 index 0000000..a922f62 --- /dev/null +++ b/manual/src/main/asciidoc/camel-guide/_osgi-bundle-blueprint.adoc @@ -0,0 +1,127 @@ +=== Deploy as an OSGi bundle with Blueprint + +Using an OSGi bundle to deploy your Camel routes allows you to use the Java or Scala DSL for defining your routes. + +In this case, we will use a Blueprint XML file to start your Camel routs. To do so, the Blueprint XML files have to be included in +the bundle inside the _OSGI-INF/blueprint_ directory. + +[source,text] +---- ++ <bundle classes, incl. your RouteBuilder> +|- META-INF +| |- MANIFEST.MF +\- OSGI-INF + \- blueprint + \- camel-context.xml +---- + +As soon as the bundle becomes Active, the Blueprint extender will create the Blueprint container starting your Routes. + +==== Example: Referring to Java or Scala RouteBuilder classes + +If your RouteBuilder classes have been defined in the _org.apache.servicemix.examples.camel_ package, the file would look like this: + +[source,xml,options="nowrap"] +---- +<blueprint + xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" + xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd"> + + <camelContext xmlns="http://camel.apache.org/schema/blueprint"> + <package>org.apache.servicemix.examples.camel</package> + </camelContext> +</blueprint> +---- + +==== Example in the distribution + +Another example for using this deployment option can be found in the _camel-blueprint_ example that is shipped with Apache +ServiceMix. + +In order to add a Java DSL route to that example, the following changes have to be implemented. + +First, add the camel-core library as a dependency to the pom-file: + +[source,xml,subs="attributes+"] +---- +<dependencies> + <dependency> + <groupId>org.apache.camel</groupId> + <artifactId>camel-core</artifactId> + <version>{camel-version}</version> + </dependency> +</dependencies> +---- + +Then, add the following class to the org.apache.servicemix.examples.camel-package, alongside the existing _MyTransform_-class: + +[source,java] +---- +package org.apache.servicemix.examples.camel; + +import org.apache.camel.builder.RouteBuilder; + +public class MyRouteBuilder extends RouteBuilder { + + public void configure() { + // set up the transform bean + MyTransform transform = new MyTransform(); + transform.setPrefix("JavaDSL"); + + from("timer://javaTimer?fixedRate=true&period=2000") + .bean(transform, "transform") + .to("log:ExampleRouter"); + } +} +---- + +Finally, add the package-element to the Blueprint-file. The complete Blueprint file looks like this: + +[source,xml,options="nowrap"] +---- +<blueprint + xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" + xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd"> + + <camelContext + xmlns="http://camel.apache.org/schema/blueprint"> + <!-- install the Java DSL route builder --> + <package>org.apache.servicemix.examples.camel</package> <!--1--> + + <!-- install the route which is defined with XML tags --> <!--2--> + <route> + <from uri="timer://myTimer?fixedRate=true&period=2000" /> + <bean ref="myTransform" method="transform"/> + <to uri="log:ExampleRouterBlueprint" /> + </route> + </camelContext> + + <cm:property-placeholder persistent-id="org.apache.servicemix.examples" update-strategy="reload"> + <cm:default-properties> + <cm:property name="prefix" value="Blueprint-Example"/> <!--3--> + </cm:default-properties> + </cm:property-placeholder> + + <bean id="myTransform" class="org.apache.servicemix.examples.camel.MyTransform"> + <property name="prefix" value="${prefix}" /> + </bean> +</blueprint> +---- +<1> The package-element causes the route defined by the Java DSL to be installed and started. +<2> The route defined by XML tags and the one defined by the Java DSL are functionally equivalent, and run independently. +<3> The default value of the prefix-parameter is displayed in the output in the Karaf console, unless it is changed in the example +configuration file. + + +Once you have built the example, with `mvn clean install`, and installed it in Karaf using `feature:install +examples-camel-blueprint` output from both routes will be displayed in the Karaf console: + +[source,text] +---- +>>>> Blueprint-Example set body: Sun May 07 13:38:47 CEST 2017 +>>>> JavaDSL set body: Sun May 07 13:38:47 CEST 2017 +---- \ No newline at end of file http://git-wip-us.apache.org/repos/asf/servicemix/blob/138042d4/manual/src/main/asciidoc/camel-guide/_osgi-bundle-spring.adoc ---------------------------------------------------------------------- diff --git a/manual/src/main/asciidoc/camel-guide/_osgi-bundle-spring.adoc b/manual/src/main/asciidoc/camel-guide/_osgi-bundle-spring.adoc new file mode 100644 index 0000000..4f7cbc7 --- /dev/null +++ b/manual/src/main/asciidoc/camel-guide/_osgi-bundle-spring.adoc @@ -0,0 +1,41 @@ +=== Deploy as an OSGi bundle with Spring + +Using an OSGi bundle to deploy your Camel routes allows you to use the Java or Scala DSL for defining your routes. + +In this case, you're using Spring to start your Camel routes, so you include your Spring XML file (e.g. _camel-context.xml_) in the _META-INF/spring_ folder inside your bundle. +[source,text] +---- ++ <bundle classes, incl. your RouteBuilder> +\- META-INF + |- MANIFEST.MF + \- spring + \- camel-context.xml +---- + +After the bundle has been activated, the Spring DM extender will find, create and start your Spring ApplicationContexts. + +==== Example: Referring to Java or Scala RouteBuilder classes +If your RouteBuilder classes have been defined in the _org.apache.servicemix.manual.camel_ package, the file would look like this: +[source,xml] +---- +<?xml version="1.0" encoding="UTF-8"?> +<beans xmlns="http://www.springframework.org/schema/beans" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:camel="http://camel.apache.org/schema/spring" + xsi:schemaLocation=" + http://www.springframework.org/schema/beans + http://www.springframework.org/schema/beans/spring-beans-2.5.xsd + http://camel.apache.org/schema/spring + http://camel.apache.org/schema/spring/camel-spring-${camel-version}.xsd"> + + <camelContext xmlns="http://camel.apache.org/schema/spring"> + <package>org.apache.servicemix.manual.camel</package> + </camelContext> + +</beans> +---- + +==== Example in the distribution + +Another example for using this deployment option can be found in the _camel-osgi_ example that is shipped with Apache ServiceMix. + http://git-wip-us.apache.org/repos/asf/servicemix/blob/138042d4/manual/src/main/asciidoc/camel-guide/_plain-blueprint.adoc ---------------------------------------------------------------------- diff --git a/manual/src/main/asciidoc/camel-guide/_plain-blueprint.adoc b/manual/src/main/asciidoc/camel-guide/_plain-blueprint.adoc new file mode 100644 index 0000000..b3cec83 --- /dev/null +++ b/manual/src/main/asciidoc/camel-guide/_plain-blueprint.adoc @@ -0,0 +1,35 @@ +=== Deploy as a plain Blueprint XML file + +ServiceMix supports the deployment of plain Blueprint XML files, automatically creating and starting the Blueprint container from +the XML file. + +In order to leverage this feature to create and start Camel routes, drop a file with this syntax in the _$SERVICEMIX_HOME/deploy_ +folder: + +[source,xml,options="nowrap"] +---- +include::plain-blueprint-template.xml[] +---- + +==== Example + +Create a new XML file, plain-blueprint.xml, in the deployment folder with the code below to start a route to copy files from one +directory to another. + +[source,xml,options="nowrap"] +---- +include::plain-blueprint.xml[] +---- + +Verify in the Karaf console that it has been started: + +[source,text] +---- +karaf@root> bundle:list | grep plain-blueprint +223 | Active | 80 | 0.0.0 | plain-blueprint.xml +karaf@root> +---- + +Copy a file into the folder _$SERVICEMIX_HOME/input_, and verify that it is copied to the folder _$SERVICEMIX_HOME/output_. Note +that the original file has been moved to the folder _$SERVICEMIX_HOME/input/.camel_. + http://git-wip-us.apache.org/repos/asf/servicemix/blob/138042d4/manual/src/main/asciidoc/camel-guide/_plain-spring.adoc ---------------------------------------------------------------------- diff --git a/manual/src/main/asciidoc/camel-guide/_plain-spring.adoc b/manual/src/main/asciidoc/camel-guide/_plain-spring.adoc new file mode 100644 index 0000000..61b6fce --- /dev/null +++ b/manual/src/main/asciidoc/camel-guide/_plain-spring.adoc @@ -0,0 +1,49 @@ +// +// Licensed 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. +// + +=== Deploy as a plain Spring XML file + +ServiceMix supports the deployment of plain Spring XML files, automatically creating and starting the Spring ApplicationContext from +the XML file. + +In order to leverage this feature to create and start Camel routes, drop a file with this syntax in the _$SERVICEMIX_HOME/deploy_ +folder: + +[source,xml,options="nowrap"] +---- +include::plain-spring-template.xml[] +---- + +==== Example + +Create a new XML file, plain-spring.xml, in the deployment folder with the code below to start a route to copy files from one +directory to another. + +[source,xml,options="nowrap"] +---- +include::plain-spring.xml[] +---- + +Verify in the Karaf console that it has been started: + +[source,text] +---- +karaf@root> bundle:list | grep plain-spring +223 | Active | 80 | 0.0.0 | plain-spring.xml +karaf@root> +---- + +Copy a file into the folder _$SERVICEMIX_HOME/input_, and verify that it is copied to the folder _$SERVICEMIX_HOME/output_. Note +that the original file has been moved to the folder _$SERVICEMIX_HOME/input/.camel_. + http://git-wip-us.apache.org/repos/asf/servicemix/blob/138042d4/manual/src/main/asciidoc/camel-guide/_troubleshooting.adoc ---------------------------------------------------------------------- diff --git a/manual/src/main/asciidoc/camel-guide/_troubleshooting.adoc b/manual/src/main/asciidoc/camel-guide/_troubleshooting.adoc new file mode 100644 index 0000000..3c70af7 --- /dev/null +++ b/manual/src/main/asciidoc/camel-guide/_troubleshooting.adoc @@ -0,0 +1,27 @@ +// +// Licensed 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. +// + +== Troubleshooting + +In this section, you'll find solutions for some frequently asked questions when using Camel on ServicMix. + +=== No component with id 'xyz' could be found +This usually means that your route is trying to use a component that hasn't been installed yet. + +Solution: + +. install the additional component +. restart the bundle using the _bundle:restart <bundle id>_ command - you can find the bundle id for your route in the output of the _bundle:list_ command + +Refer to <<camel-installing,Installing additional components>> http://git-wip-us.apache.org/repos/asf/servicemix/blob/138042d4/manual/src/main/asciidoc/camel-guide/camel-guide.adoc ---------------------------------------------------------------------- diff --git a/manual/src/main/asciidoc/camel-guide/camel-guide.adoc b/manual/src/main/asciidoc/camel-guide/camel-guide.adoc new file mode 100644 index 0000000..0c62713 --- /dev/null +++ b/manual/src/main/asciidoc/camel-guide/camel-guide.adoc @@ -0,0 +1,21 @@ +// +// Licensed 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. +// + +// This is standalone document with a Asciidoctor document title. +// This document is not intended to be included in other documents. += Camel User Guide +Apache Software Foundation +:numbered: + +include::camel-guide/_camel-guide.adoc[] http://git-wip-us.apache.org/repos/asf/servicemix/blob/138042d4/manual/src/main/asciidoc/camel-guide/plain-blueprint-template.xml ---------------------------------------------------------------------- diff --git a/manual/src/main/asciidoc/camel-guide/plain-blueprint-template.xml b/manual/src/main/asciidoc/camel-guide/plain-blueprint-template.xml new file mode 100644 index 0000000..706dcf6 --- /dev/null +++ b/manual/src/main/asciidoc/camel-guide/plain-blueprint-template.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<blueprint + xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" + xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd"> + + <camelContext xmlns="http://camel.apache.org/schema/blueprint"> + <!-- add Camel route definitions etc here --> + </camelContext> + +</blueprint> http://git-wip-us.apache.org/repos/asf/servicemix/blob/138042d4/manual/src/main/asciidoc/camel-guide/plain-blueprint.xml ---------------------------------------------------------------------- diff --git a/manual/src/main/asciidoc/camel-guide/plain-blueprint.xml b/manual/src/main/asciidoc/camel-guide/plain-blueprint.xml new file mode 100644 index 0000000..b4fb02b --- /dev/null +++ b/manual/src/main/asciidoc/camel-guide/plain-blueprint.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8"?> +<blueprint + xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" + xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd"> + + <camelContext xmlns="http://camel.apache.org/schema/blueprint"> + <route> + <from uri="file:input"/> + <log message="Copying ${file:name} to the output directory"/> + <to uri="file:output"/> + </route> + </camelContext> + +</blueprint> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/servicemix/blob/138042d4/manual/src/main/asciidoc/camel-guide/plain-spring-template.xml ---------------------------------------------------------------------- diff --git a/manual/src/main/asciidoc/camel-guide/plain-spring-template.xml b/manual/src/main/asciidoc/camel-guide/plain-spring-template.xml new file mode 100644 index 0000000..41a6ab0 --- /dev/null +++ b/manual/src/main/asciidoc/camel-guide/plain-spring-template.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<beans xmlns="http://www.springframework.org/schema/beans" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:ctx="http://www.springframework.org/schema/context" + xmlns:camel="http://camel.apache.org/schema/spring" + xmlns:osgix="http://www.springframework.org/schema/osgi-compendium" + xsi:schemaLocation=" + http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd + http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd + http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd + http://www.springframework.org/schema/osgi-compendium http://www.springframework.org/schema/osgi-compendium/spring-osgi-compendium.xsd"> + + <camel:camelContext xmlns="http://camel.apache.org/schema/spring"> + <!-- add Camel route definitions etc here --> + </camel:camelContext> + +</beans> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/servicemix/blob/138042d4/manual/src/main/asciidoc/camel-guide/plain-spring.xml ---------------------------------------------------------------------- diff --git a/manual/src/main/asciidoc/camel-guide/plain-spring.xml b/manual/src/main/asciidoc/camel-guide/plain-spring.xml new file mode 100644 index 0000000..355c285 --- /dev/null +++ b/manual/src/main/asciidoc/camel-guide/plain-spring.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8"?> +<beans xmlns="http://www.springframework.org/schema/beans" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:ctx="http://www.springframework.org/schema/context" + xmlns:camel="http://camel.apache.org/schema/spring" + xmlns:osgix="http://www.springframework.org/schema/osgi-compendium" + xsi:schemaLocation=" + http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd + http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd + http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd + http://www.springframework.org/schema/osgi-compendium http://www.springframework.org/schema/osgi-compendium/spring-osgi-compendium.xsd"> + + <camel:camelContext xmlns="http://camel.apache.org/schema/spring"> + <route> + <from uri="file:input"/> + <log message="Copying ${file:name} to the output directory"/> + <to uri="file:output"/> + </route> + </camel:camelContext> + +</beans> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/servicemix/blob/138042d4/manual/src/main/asciidoc/contribute.adoc ---------------------------------------------------------------------- diff --git a/manual/src/main/asciidoc/contribute.adoc b/manual/src/main/asciidoc/contribute.adoc new file mode 100644 index 0000000..298eb08 --- /dev/null +++ b/manual/src/main/asciidoc/contribute.adoc @@ -0,0 +1,34 @@ +// +// Licensed 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. +// + +// This is standalone document with a Asciidoctor document title. +// This document is not intended to be included in other documents. += Contributing to the Documentation +Apache Software Foundation +:!numbered: +:!toc: + +== Found an mistake or have a suggestion for improvement? + +We welcome any feedback or contribution to the documentation. + +Whether you spotted a mistake, have suggestions for new content or just want to say hi, feel to get in touch using the http://servicemix.apache.org/community/mailing-lists.html[mailing lists], http://servicemix.apache.org/community/irc.html[IRC channel] or on Twitter using the `#servicemix` hash tag. + +== Contributing to the documentation code + +The documentation is written using http://asciidoctor.org/[Asciidoctor]. The pages can be edited in any text editor. + +You can find more information about how to get and build the documentation codebase http://servicemix.apache.org/developers/source/documentation-source.html[here] and one more thing... + +We really love documentation patches ;) \ No newline at end of file http://git-wip-us.apache.org/repos/asf/servicemix/blob/138042d4/manual/src/main/asciidoc/docinfo-footer.html ---------------------------------------------------------------------- diff --git a/manual/src/main/asciidoc/docinfo-footer.html b/manual/src/main/asciidoc/docinfo-footer.html new file mode 100644 index 0000000..62c0891 --- /dev/null +++ b/manual/src/main/asciidoc/docinfo-footer.html @@ -0,0 +1,5 @@ +<div id="smxSiteFooter"> + <!-- We can use document attributes: --> + Apache ServiceMix Version {servicemix-version}. © 2008-2017 The Apache Software Foundation. + <br/> Apache ServiceMix, ServiceMix, Apache, the Apache feather logo, and the Apache ServiceMix project logo are trademarks of The Apache Software Foundation. +</div> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/servicemix/blob/138042d4/manual/src/main/asciidoc/docinfo.html ---------------------------------------------------------------------- diff --git a/manual/src/main/asciidoc/docinfo.html b/manual/src/main/asciidoc/docinfo.html new file mode 100644 index 0000000..1ac3d9f --- /dev/null +++ b/manual/src/main/asciidoc/docinfo.html @@ -0,0 +1,24 @@ +<!-- Change some CSS. --> +<style> + /* Change CSS overflow for table of contents. */ + + #toc.toc2, + #toc { + overflow: scroll; + } + + div#smxSiteFooter { + background: url("images/bg.png") center; + margin-top: 30px; + color: #ffffff; + text-align: center; + vertical-align: bottom; + clear: both; + padding: 2px 20px; + font-size: 80%; + } + + .smx-list-description { + font-size: smaller; + } +</style> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/servicemix/blob/138042d4/manual/src/main/asciidoc/documentation.adoc ---------------------------------------------------------------------- diff --git a/manual/src/main/asciidoc/documentation.adoc b/manual/src/main/asciidoc/documentation.adoc new file mode 100644 index 0000000..203f57c --- /dev/null +++ b/manual/src/main/asciidoc/documentation.adoc @@ -0,0 +1,55 @@ +// +// Licensed 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. +// + +// This is standalone document with a Asciidoctor document title. +// This document is not intended to be included in other documents. +// This document is meant to contain (almost) everything. + += Apache ServiceMix Documentation +Apache Software Foundation +:numbered: +:toclevels: 3 + +== User Guide + +include::user-guide/_user-guide.adoc[leveloffset=+1] + +== Quickstart Guide + +include::quickstart/_quickstart.adoc[leveloffset=+1] + +== Camel Guide + +include::camel-guide/_camel-guide.adoc[leveloffset=+1] + +== ActiveMQ Guide + +include::activemq-guide/_activemq-guide.adoc[leveloffset=+1] + +== Activiti Guide + +include::activiti-guide/_activiti-guide.adoc[leveloffset=+1] + +== Karaf User Guide + +Apache ServiceMix uses Apache Karaf as the underlying OSGi server runtime. The https://karaf.apache.org/manual/latest/#_user_guide[Karaf User Guide] explains +about the features and functionality provided by Karaf. + +== Karaf Developer Guide + +The Apache https://karaf.apache.org/manual/latest/#_developer_guide[Karaf Developer Guide] gives you some information about developing with and for the OSGi server runtime. + +== Resources + +include::resources/_resources.adoc[leveloffset=+1] \ No newline at end of file http://git-wip-us.apache.org/repos/asf/servicemix/blob/138042d4/manual/src/main/asciidoc/images/ASF-logo.png ---------------------------------------------------------------------- diff --git a/manual/src/main/asciidoc/images/ASF-logo.png b/manual/src/main/asciidoc/images/ASF-logo.png new file mode 100644 index 0000000..71adced Binary files /dev/null and b/manual/src/main/asciidoc/images/ASF-logo.png differ http://git-wip-us.apache.org/repos/asf/servicemix/blob/138042d4/manual/src/main/asciidoc/images/bg.png ---------------------------------------------------------------------- diff --git a/manual/src/main/asciidoc/images/bg.png b/manual/src/main/asciidoc/images/bg.png new file mode 100644 index 0000000..878a84f Binary files /dev/null and b/manual/src/main/asciidoc/images/bg.png differ http://git-wip-us.apache.org/repos/asf/servicemix/blob/138042d4/manual/src/main/asciidoc/images/camel-sample-deploy.png ---------------------------------------------------------------------- diff --git a/manual/src/main/asciidoc/images/camel-sample-deploy.png b/manual/src/main/asciidoc/images/camel-sample-deploy.png new file mode 100644 index 0000000..7cc7664 Binary files /dev/null and b/manual/src/main/asciidoc/images/camel-sample-deploy.png differ http://git-wip-us.apache.org/repos/asf/servicemix/blob/138042d4/manual/src/main/asciidoc/images/camel-sample-log.png ---------------------------------------------------------------------- diff --git a/manual/src/main/asciidoc/images/camel-sample-log.png b/manual/src/main/asciidoc/images/camel-sample-log.png new file mode 100644 index 0000000..14e8d9e Binary files /dev/null and b/manual/src/main/asciidoc/images/camel-sample-log.png differ http://git-wip-us.apache.org/repos/asf/servicemix/blob/138042d4/manual/src/main/asciidoc/images/console.png ---------------------------------------------------------------------- diff --git a/manual/src/main/asciidoc/images/console.png b/manual/src/main/asciidoc/images/console.png new file mode 100644 index 0000000..d0c85fa Binary files /dev/null and b/manual/src/main/asciidoc/images/console.png differ http://git-wip-us.apache.org/repos/asf/servicemix/blob/138042d4/manual/src/main/asciidoc/images/eip.jpg ---------------------------------------------------------------------- diff --git a/manual/src/main/asciidoc/images/eip.jpg b/manual/src/main/asciidoc/images/eip.jpg new file mode 100644 index 0000000..13d228d Binary files /dev/null and b/manual/src/main/asciidoc/images/eip.jpg differ http://git-wip-us.apache.org/repos/asf/servicemix/blob/138042d4/manual/src/main/asciidoc/images/eip150x198.jpg ---------------------------------------------------------------------- diff --git a/manual/src/main/asciidoc/images/eip150x198.jpg b/manual/src/main/asciidoc/images/eip150x198.jpg new file mode 100644 index 0000000..5700d75 Binary files /dev/null and b/manual/src/main/asciidoc/images/eip150x198.jpg differ http://git-wip-us.apache.org/repos/asf/servicemix/blob/138042d4/manual/src/main/asciidoc/images/enterpreise-soa-best-practices-krafzig.jpg ---------------------------------------------------------------------- diff --git a/manual/src/main/asciidoc/images/enterpreise-soa-best-practices-krafzig.jpg b/manual/src/main/asciidoc/images/enterpreise-soa-best-practices-krafzig.jpg new file mode 100644 index 0000000..fd6b8ea Binary files /dev/null and b/manual/src/main/asciidoc/images/enterpreise-soa-best-practices-krafzig.jpg differ http://git-wip-us.apache.org/repos/asf/servicemix/blob/138042d4/manual/src/main/asciidoc/images/enterpreise-soa-best-practices-krafzig150x197.jpg ---------------------------------------------------------------------- diff --git a/manual/src/main/asciidoc/images/enterpreise-soa-best-practices-krafzig150x197.jpg b/manual/src/main/asciidoc/images/enterpreise-soa-best-practices-krafzig150x197.jpg new file mode 100644 index 0000000..ee00d2a Binary files /dev/null and b/manual/src/main/asciidoc/images/enterpreise-soa-best-practices-krafzig150x197.jpg differ http://git-wip-us.apache.org/repos/asf/servicemix/blob/138042d4/manual/src/main/asciidoc/images/featureslist-grep-webconsole.png ---------------------------------------------------------------------- diff --git a/manual/src/main/asciidoc/images/featureslist-grep-webconsole.png b/manual/src/main/asciidoc/images/featureslist-grep-webconsole.png new file mode 100644 index 0000000..37658c4 Binary files /dev/null and b/manual/src/main/asciidoc/images/featureslist-grep-webconsole.png differ http://git-wip-us.apache.org/repos/asf/servicemix/blob/138042d4/manual/src/main/asciidoc/images/featureslist.png ---------------------------------------------------------------------- diff --git a/manual/src/main/asciidoc/images/featureslist.png b/manual/src/main/asciidoc/images/featureslist.png new file mode 100644 index 0000000..07ab293 Binary files /dev/null and b/manual/src/main/asciidoc/images/featureslist.png differ http://git-wip-us.apache.org/repos/asf/servicemix/blob/138042d4/manual/src/main/asciidoc/images/ibsen_2nd_meap.png ---------------------------------------------------------------------- diff --git a/manual/src/main/asciidoc/images/ibsen_2nd_meap.png b/manual/src/main/asciidoc/images/ibsen_2nd_meap.png new file mode 100644 index 0000000..8c8796a Binary files /dev/null and b/manual/src/main/asciidoc/images/ibsen_2nd_meap.png differ
