Skip to content

Commit

Permalink
Initial Commit
Browse files Browse the repository at this point in the history
  • Loading branch information
Brian Oliver committed Jun 7, 2016
1 parent 763a633 commit f045479
Show file tree
Hide file tree
Showing 107 changed files with 77,350 additions and 2 deletions.
136 changes: 136 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
Contributing to the Oracle Coherence Demonstration
==================================================

_Copyright (c) 2014, 2016 Oracle and/or its affiliates The Universal Permissive License (UPL), Version 1.0_

<h4>Becoming a Contributor</h4>

Contributing to the Coherence Demonstration can be done in various ways, each of which is
valuable to the Java and Oracle Coherence Community. Contributions may
include helping out by answering questions on the forums, isolating and submitting
defects resolution requests, proposing or submitting defect resolutions (fixes),
suggesting or building enhancements, introducing new features and improving tests
and documentation.

For all contributions that involve making a change to the source tree and thus
releasing a new build of the Coherence Demonstration, those primarily
being a defect fix, enhancement, new feature or documentation improvement, all
non-Oracle contributors must complete and sign the
[Oracle Contributors Agreement](http://oss.oracle.com/oca.pdf).

To do this, simply print out the form, fill in the necessary details, scan it
in and return via email to: oracle-ca_us [at] oracle [dot] com.

**Note 1:** For the "Project Name:" please write "Coherence Demonstration".

**Note 2:** This is the same agreement used for making contributions to GlassFish,
Open Solaris and the Open Java itself. If you already have executed this
agreement then you're ready to contribute to the Coherence Demonstration.

Should you have any questions regarding this agreement, you should consult the
[Oracle Contributors Agreement FAQ](http://www.oracle.com/technetwork/oca-faq-405384.pdf)

<h4>Roles and Responsibilities</h4>

As mentioned above, there are quite a few ways to contribute to the Coherence
Demonstration, and not all of them involve contributing source code! Simply using
the software, participating on mailing lists or forums, filing bug reports or
enhancement requests are an incredibly valuable form of participation.

The typical roles and responsibilities for contributors to the Coherence Demonstration
project are often categorized as follows:

Users, Contributors, Committers, Maintainers, and Project Leads.

**Users:**

Users are the people who use the software. Users are using the software, reporting
bugs, making feature requests and suggestions. This is by far the most important
category of people. Without users, there is no reason for the project.

*How to become one:* Download the software and use it to build an application.

**Contributors:**

Contributors are individuals who contribute to an Coherence Demonstration project,
but do not have write access to the source tree. Contributions can be in the form of
source code patches, new code, or bug reports, but could also include documentation
content like articles, FAQs, or screenshots.

A contributor who has sent in beneficial source code patches on a project
can be elevated to Committer status by a Maintainer.

Integration of a Contributor submissions done at the discretion of a Maintainer,
but this is an iterative, communicative process. Note that for code to be
integrated, a completed Oracle Contribution Agreement is required from
each contributor.

*How to become one:* Contribute in any of the ways described above: either code,
examples, web site updates, tests, bugs, and patches. If you're interested in
becoming a Committer to the source base, get the sources to the project, make
an improvement or fix a bug, and send that code to the developers using a Pull Request
or attach it to the bug report in the issue tracking system.

**Committers:**

Committers are individuals that have had Pull Requests for their contributions accepted.

Rules for how , once you have commit access, will vary by project and
module. Be sure to ask before you start making changes!

*How to become one:* Submit Pull Requests, and ask the Maintainer of
the code to review and accept the changes. The Maintainer will review the changes
and seek consensus with other Maintainers and committers.

**Maintainers:**

Each module has one Maintainer, who has check-in permissions (either for that
module or globally), and "manages" a group of Committers. They are responsible
for reviewing contributed Pull Requests, bug fixes, and new code from the development
branch of the source tree into the stable branch. Maintainers are responsible
for making sure that these contributions do not break the build.

The Maintainer is also responsible for ensuring everyone who contributes
has submitted an Oracle Contribution Agreement.

A Maintainer is responsible for their module, and for accepting Pull Requests
from Contributors. They also act as the "police force" of the module,
helping to ensure quality across the build.

*How to become one:*

- Start a module (you need to have written some working code on your project
to do this, you'll also need to talk to the Project Lead).

- Have responsibility for that module handed over to you from the current Maintainer.

- Take over an abandoned project--sometimes someone starts something, but for
one reason or another can't continue to work on it. If it's interesting to you,
volunteer!

**Project Lead:**

The Coherence Demonstration has several Project Leads.

The Project Leads are currently appointed by Oracle. They are responsible for
managing the entire project, helping to create policies by consensus that
ensure global quality.

<h4>Making a Contribution</h4>

All contributors are required to be a Committer in order to commit
contributions to the Coherence Demonstration, including documentation.

To become a Committer you must first clearly demonstrate both
skill as a developer and be capable of strictly adhering to the quality
and architectural requirements of the Coherence Demonstration. In order
to demonstrate these abilities, it's best to get started by submitting Pull Requests
and then asking the Maintainer or Project Lead to review said changes, after which
they may be accepted and submitted (either by the Maintainer or Project Lead).

Like all large projects, the Coherence Demonstration employs strict coding
guidelines. For the most part these are easily automated using the preferred
tool called [JIndent](http://www.jindent.com). A JIndent style-template for
the Coherence Demonstration is located in the documents folder of the source tree.

**Note:** Oracle does not supply licenses for JIndent.
47 changes: 47 additions & 0 deletions LICENSE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# Oracle Coherence Demo

You may not use the identified files except in compliance with the
Universal Permissive License (UPL), Version 1.0 (the "License.")

You may obtain a copy of the License at
https://opensource.org/licenses/UPL. A copy of the license is
also reproduced below.

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.

```
Copyright (c) 2015, 2016 Oracle and/or its affiliates
The Universal Permissive License (UPL), Version 1.0
Subject to the condition set forth below, permission is hereby granted to any person obtaining a copy of this
software, associated documentation and/or data (collectively the "Software"), free of charge and under any and
all copyright rights in the Software, and any and all patent rights owned or freely licensable by each licensor
hereunder covering either (i) the unmodified Software as contributed to or provided by such licensor, or (ii)
the Larger Works (as defined below), to deal in both
(a) the Software, and
(b) any piece of software and/or hardware listed in the lrgrwrks.txt file if one is included with the Software
(each a “Larger Work” to which the Software is contributed by such licensors),
without restriction, including without limitation the rights to copy, create derivative works of, display,
perform, and distribute the Software and make, use, sell, offer for sale, import, export, have made, and have
sold the Software and the Larger Work(s), and to sublicense the foregoing rights on either these or other terms.
This license is subject to the following condition:
The above copyright notice and either this complete permission notice or at a minimum a reference to the UPL must
be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
```
148 changes: 146 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,146 @@
# coherence-demo
The Coherence Demonstration
Oracle Coherence Demonstration
==============================

Overview
--------

This document describes how to build and run the Coherence Demonstration application.
Building the application results in a single self-contained jar as well as javadoc and source.
The demonstration showcases Coherence general features, scalability capabilities as well as new 12.2.1
features including:

Cache Persistence
Federation
Java 8 Support

The demonstration uses AngularJS 1.4.1, Bootstrap 3.3.4 as well as a number of other
frameworks. The UI interacts with Coherence using REST.

Prerequisites
-------------

In order to run the demonstration you must have the following installed:
1. Java 8 SE Development Kit or Runtime environment.

You can download the software from:
- Java SE Development Kit - http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
- JAVA SE Runtime Environment - http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html

2. Maven version 3.2.5 or above installed and configured.
3. Coherence 12.2.1.0.2 or above installed.
If you wish to demonstrate the the Coherence JVisualVM Plug-in, follow the instructions
below to install:
https://docs.oracle.com/middleware/1221/coherence/manage/jmx.htm#COHMG5582
4. You must use a browser that supports AngularJS to run this application. As of
writing this, the following are supported:
Safari, Chrome, Firefox, Opera 15, IE9 and mobile browsers (Android, Chrome Mobile, iOS Safari).

For more information on browser compatibility see https://code.angularjs.org/1.4.1/docs/misc/faq.

Ensure the following environment variables are set:

JAVA_HOME
Make sure that the JAVA_HOME environment variable points to the location of a JDK supported by the
Oracle Coherence version you are using.

COHERENCE_HOME
Make sure COHERENCE_HOME is set to point to your Coherence install directory.
This is only required for the Maven install-file commands.

MAVEN_HOME
If mvn command is not in your path then you should set MAVEN_HOME and then add MAVEN_HOME\bin to your PATH
in a similar way to Java being added to the path below.

You must also ensure the java command is in the path.
E.g. for Linux/UNIX:
export PATH=$JAVA_HOME/bin:$PATH

For Windows:
set PATH=%JAVA_HOME%\bin;%PATH%

You must have Coherence and Coherence-REST installed into your local maven repository. If you
do not, then carry out the following, replacing the version number with the version
of Coherence you have installed.

E.g. for Linux/UNIX/Mac:

mvn install:install-file -Dfile=$COHERENCE_HOME/lib/coherence.jar -DpomFile=$COHERENCE_HOME/plugins/maven/com/oracle/coherence/coherence/12.2.1/coherence.12.2.1.pom
mvn install:install-file -Dfile=$COHERENCE_HOME/lib/coherence-rest.jar -DpomFile=$COHERENCE_HOME/plugins/maven/com/oracle/coherence/coherence-rest/12.2.1/coherence-rest.12.2.1.pom

E.g. for Windows:

mvn install:install-file -Dfile=%COHERENCE_HOME%\lib\coherence.jar -DpomFile=%COHERENCE_HOME%\plugins\maven\com\oracle\coherence\coherence\12.2.1\coherence.12.2.1.pom
mvn install:install-file -Dfile=%COHERENCE_HOME%\lib\coherence-rest.jar -DpomFile=%COHERENCE_HOME%\plugins\maven\com\oracle\coherence\coherence-rest\12.2.1\coherence-rest.12.2.1.pom

Note: You may need to specify your settings.xml file by adding the following to download
required dependencies.

"mvn -s /path/to/settings.xml ..."

Build Instructions
------------------
Build the Coherence Demonstration by using:
"mvn clean install"

The target directory will contain a number of files:
- coherence-demo-2.0.0.jar - Executable JAR file, see instructions below
- coherence-demo-2.0.0-javadoc.jar - javadoc
- coherence-demo-2.0.0-sources.jar - sources

Run Instructions
----------------
Ensuring you have Java 8 in the PATH for your operating system, simply run the following:

java -jar target/coherence-demo-2.0.0.jar

This command will startup a Coherence cache server as well as HTTP server on port 8080 for
serving REST and application data. Once the cache server starts, the default browser
will be opened up to http://127.0.0.1:8080/application/index.html and the application will
load. (If you wish to change the port used, see below.)

The following features are available to demonstrate:
- Dynamically add/ remove cluster members and observing the data repartition and recover automatically.
- Create and Recover snapshots via the "Persistence" menu.
- Enable Real-Time price updates
- Enable/ Disable indexes for queries
- Add additional data, clear the cache or populate the cache from the "Tools" menu
- Start JVisualVM from the "Tools" menu.

- Start a secondary cluster via the "Federation" menu.
- Pause and resume replication to secondary cluster
- Issue replicate all to secondary cluster
- Open secondary cluster dashboard to observe changes being replicated
- Stop Federation and shutdown secondary cluster
Note: If you recover a snapshot on a cluster you must replicate all to re-sync.

To shutdown the application use the "Shutdown" option from the "Tools" menu.
This will shutdown all processes including the secondary cluster if started.

Note: Secondary cluster may not form if you are running on a VPN due to security restrictions.

Modifying the Defaults
----------------------
HTTP Ports and hostname
The default HTTP hostname is 127.0.0.1 and default port is 8080. To modify these you can
add the http.hostname or http.port properties on startup:

java -Dhttp.hostname=myhostname -Dhttp.port=9000 -jar coherence-demo-2.0.0.jar

By changing the http.hostname you will be able to access the application outside of
your local machine.

Default Cluster Names
When starting up the application the timezone is analyzed and some sensible defaults
for primary and secondary cluster names are chosen (see Launcher.java). If you wish to
sepcify your own, you can do the following:

java -Dprimary.cluster=NewYork -Dsecondary.cluster=Boston -jar coherence-demo-2.0.0.jar

If you wish to use a cluster name with a space you must enclose it in quotes.

References
----------
For more information on Oracle Coherence, please see the following links:
- Download Coherence - http://www.oracle.com/technetwork/middleware/coherence/downloads/index.html
- Coherence Documentation - http://docs.oracle.com/middleware/1221/coherence/index.html
- Coherence Community - http://coherence.java.net/
Loading

0 comments on commit f045479

Please sign in to comment.