blob: bdf766a3e6c1996654f94a403777b39e36cbcb8d [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!--
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.
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- Generated by Apache Maven Doxia at 2021-09-26 -->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Apache James Project &#x2013; Guice-Cassandra installation guide</title>
<style type="text/css" media="all">
@import url("../../css/james.css");
@import url("../../css/maven-base.css");
@import url("../../css/maven-theme.css");
@import url("../../css/site.css");
@import url("../../js/jquery/css/custom-theme/jquery-ui-1.8.5.custom.css");
@import url("../../js/jquery/css/print.css");
@import url("../../js/fancybox/jquery.fancybox-1.3.4.css");
</style>
<script type="text/javascript" src="../../js/jquery/js/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="../../js/jquery/js/jquery-ui-1.8.5.custom.min.js"></script>
<script type="text/javascript" src="../../js/fancybox/jquery.fancybox-1.3.4.js"></script>
<link rel="stylesheet" href="../../css/print.css" type="text/css" media="print" />
<meta name="Date-Revision-yyyymmdd" content="20210926" />
<meta http-equiv="Content-Language" content="en" />
<!-- Google Analytics -->
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-1384591-1']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script').item(0); s.parentNode.insertBefore(ga, s);
})();
</script>
</head>
<body class="composite">
<div id="banner">
<a href="../../index.html" id="bannerLeft" title="james-logo.png">
<img src="../../images/logos/james-logo.png" alt="James Project" />
</a>
<a href="https://www.apache.org/index.html" id="bannerRight">
<img src="images/logos/asf_logo_small.png" alt="The Apache Software Foundation" />
</a>
<div class="clear">
<hr/>
</div>
</div>
<div id="breadcrumbs">
<div class="xleft">
<span id="publishDate">Last Published: 2021-09-26</span>
</div>
<div class="xright"> <a href="../../index.html" title="Home">Home</a>
|
<a href="../../documentation.html" title="James">James</a>
|
<a href="../../mime4j/index.html" title="Mime4J">Mime4J</a>
|
<a href="../../jsieve/index.html" title="jSieve">jSieve</a>
|
<a href="../../jspf/index.html" title="jSPF">jSPF</a>
|
<a href="../../jdkim/index.html" title="jDKIM">jDKIM</a>
</div>
<div class="clear">
<hr/>
</div>
</div>
<div id="leftColumn">
<div id="navcolumn">
<h5>James components</h5>
<ul>
<li class="collapsed">
<a href="../../documentation.html" title="About James">About James</a>
</li>
<li class="expanded">
<a href="../../server/index.html" title="Server">Server</a>
<ul>
<li class="none">
<a href="../../server/advantages.html" title="Advantages">Advantages</a>
</li>
<li class="none">
<a href="../../server/objectives.html" title="Objectives">Objectives</a>
</li>
<li class="expanded">
<a href="../../server/quick-start.html" title="User Manual">User Manual</a>
<ul>
<li class="collapsed">
<a href="../../server/features.html" title="1. Features">1. Features</a>
</li>
<li class="none">
<a href="../../server/packaging.html" title="2. Packaging">2. Packaging</a>
</li>
<li class="expanded">
<a href="../../server/install.html" title="3. Install James">3. Install James</a>
<ul>
<li class="none">
<a href="../../server/install/guice-cassandra-rabbitmq-s3.html" title="Cassandra-RabbitMQ-S3-guice">Cassandra-RabbitMQ-S3-guice</a>
</li>
<li class="none">
<strong>Cassandra-guice</strong>
</li>
<li class="none">
<a href="../../server/install/guice-jpa.html" title="JPA-guice">JPA-guice</a>
</li>
<li class="none">
<a href="../../server/install/guice-jpa-smtp.html" title="JPA-SMTP-guice">JPA-SMTP-guice</a>
</li>
</ul>
</li>
<li class="collapsed">
<a href="../../server/config.html" title="4. Configure James">4. Configure James</a>
</li>
<li class="collapsed">
<a href="../../server/manage.html" title="5. Manage">5. Manage</a>
</li>
<li class="collapsed">
<a href="../../server/monitor.html" title="6. Monitor">6. Monitor</a>
</li>
<li class="collapsed">
<a href="../../server/upgrade.html" title="7. Upgrade">7. Upgrade</a>
</li>
<li class="collapsed">
<a href="../../server/dev.html" title="8. Developers Corner">8. Developers Corner</a>
</li>
</ul>
</li>
<li class="none">
<a href="../../mail.html#James_Mailing_lists" title="Mailing Lists">Mailing Lists</a>
</li>
<li class="none">
<a href="../../server/release-notes.html" title="Release Notes">Release Notes</a>
</li>
<li class="none">
<a href="../../server/apidocs/index.html" title="Javadoc">Javadoc</a>
</li>
<li class="none">
<a href="https://issues.apache.org/jira/browse/JAMES" title="Issue Tracker">Issue Tracker</a>
</li>
<li class="none">
<a href="https://github.com/apache/james-project" title="Sources">Sources</a>
</li>
<li class="none">
<a href="../../server/rfcs.html" title="RFCs">RFCs</a>
</li>
<li class="none">
<a href="../../download.cgi#Apache_James_Server" title="Download releases">Download releases</a>
</li>
</ul>
</li>
<li class="collapsed">
<a href="../../mailet/index.html" title="Mailets">Mailets</a>
</li>
<li class="collapsed">
<a href="../../mailbox/index.html" title="Mailbox">Mailbox</a>
</li>
<li class="collapsed">
<a href="../../protocols/index.html" title="Protocols">Protocols</a>
</li>
<li class="collapsed">
<a href="../../mpt/index.html" title="MPT">MPT</a>
</li>
</ul>
<h5>Apache Software Foundation</h5>
<ul>
<li>
<strong>
<a title="ASF" href="http://www.apache.org/">ASF</a>
</strong>
</li>
<li>
<a title="Get Involved" href="http://www.apache.org/foundation/getinvolved.html">Get Involved</a>
</li>
<li>
<a title="FAQ" href="http://www.apache.org/foundation/faq.html">FAQ</a>
</li>
<li>
<a title="License" href="http://www.apache.org/licenses/" >License</a>
</li>
<li>
<a title="Sponsorship" href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a>
</li>
<li>
<a title="Thanks" href="http://www.apache.org/foundation/thanks.html">Thanks</a>
</li>
<li>
<a title="Security" href="http://www.apache.org/security/">Security</a>
</li>
</ul>
<a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
<img class="poweredBy" alt="Built by Maven" src="../../images/logos/maven-feather.png" />
</a>
</div>
</div>
<div id="bodyColumn">
<div id="contentBox">
<h1>Guice-Cassandra installation guide</h1><section>
<h2><a name="Building"></a>Building</h2><section>
<h3><a name="Requirements"></a>Requirements</h3>
<ul>
<li>Java 11 SDK</li>
<li>Docker &#x2215; ElasticSearch 7.10.2 and Cassandra 3.11.10</li>
<li>Maven 3</li>
</ul>
<p><i>WARNING</i>: JAMES-3591 Cassandra is not made to store large binary content, its use will be suboptimal compared to alternatives (namely S3 compatible BlobStores backed by for instance S3, MinIO or Ozone)</p></section><section>
<h3><a name="Building_the_artifacts"></a>Building the artifacts</h3>
<p>An usual compilation using maven will produce two artifacts into server/container/guice/cassandra-guice/target directory:</p>
<ul>
<li>james-server-cassandra-guice.jar</li>
<li>james-server-cassandra-guice.lib</li>
</ul>
<p>You can for example run in the base of <a class="externalLink" href="https://github.com/apache/james-project">this git repository</a>:</p>
<div class="source">
<div class="source">
<pre>mvn clean install
</pre></div></div>
</section></section><section>
<h2><a name="Running"></a>Running</h2><section>
<h3><a name="Requirements"></a>Requirements</h3>
<ul>
<li>Cassandra 3.11.10</li>
<li>ElasticSearch 7.10.2</li>
</ul></section><section>
<h3><a name="James_Launch"></a>James Launch</h3>
<p>To run james, you have to create a directory containing required configuration files.</p>
<p>James requires the configuration to be in a subfolder of working directory that is called <b>conf</b>. You can get a sample directory for configuration from <a class="externalLink" href="https://github.com/apache/james-project/tree/master/server/apps/cassandra-app/sample-configuration">server/apps/cassandra-app/sample-configuration</a>. You might need to adapt it to your needs.</p>
<p>You also need to generate a keystore in your conf folder with the following command:</p>
<div class="source">
<div class="source">
<pre>$ keytool -genkey -alias james -keyalg RSA -keystore conf/keystore
</pre></div></div>
<p>You need to have a Cassandra and an ElasticSearch instance running. You can either install the servers or launch them via docker:</p>
<div class="source">
<div class="source">
<pre>$ docker run -d -p 9042:9042 --name=cassandra cassandra:3.11.10
$ docker run -d -p 9200:9200 --name=elasticsearch --env 'discovery.type=single-node' docker.elastic.co/elasticsearch/elasticsearch:7.10.2
</pre></div></div>
<p>Once everything is set up, you just have to run the jar with:</p>
<div class="source">
<div class="source">
<pre>$ java -Dworking.directory=. -jar target/james-server-cassandra-guice.jar
</pre></div></div></section></section>
</div>
</div>
<div class="clear">
<hr/>
</div>
<div id="footer">
<div class="xright">Copyright &#169; 2006-2021
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
All Rights Reserved.
</div>
<div class="clear">
<hr/>
</div>
</div>
</body>
</html>