Blog

[FR-2832] How to add a FusionReactor Plugin to your FusionReactor installation

Description

Description

This article provides a set of instructions for adding FusionReactor plugins to existing FusionReactor instances and to the FusionReactor installation so that instances created in the future contain the plugin. This article provides a use case scenario, that scenario is how to add the Notification Generator plugin.

Adding a plugin to a FusionReactor instance

As mentioned in the Description this article provides a use case scenario.

1) Obtain the plugin from the FusionReactor plugins download page, click here to be taken to the page. For this scenario we would download the FusionReactor Notification Generator plugin.
2) Stop the server that contains the instance of FusionReactor that you want to add the plugin to.
3) Copy the plugin that you downloaded in step 1 into the FusionReactor instance’s plugins directory. The plugins directory is located in <FusionReactor_Home>/instance/<Instance_Name>/plugins. For this scenario it is located at C:\FusionReactor\instance\cfusion.cfmx10.HP-Pdv6-Laptop\plugins.

4) If you are running FusionReactor on a UNIX based machine (Linux, Solaris, MAC or generic UNIX) then you need to follow this step, if you are running FusionReactor on a Windows machine you can skip to step 5. When you copy over the plugin to your plugins directory, the plugin may not be owned by the same user and group as the other plugins. For example all your plugins may be owned by nobody and the plugin you downloaded may be owned by root. If your server is run as nobody then it may run into some problems in the future, so it is important that you follow this step. If it is owned by the same user and group as your other plugins then you can skip this step.

To allow the plugin to work in your environment, change the user and group of the plugin to be that of the other plugins. For our scenario this is how it would look.

Check to see if the plugin is owned by a different user and group to the other plugins.


The plugin, fr-notification-generator-plugin-1.0.0.jar, is owned by user root and group root

Change the permissions of the plugin by using the chown command.


The plugin, fr-notification-generator-plugin-1.0.0.jar, is now owned by user vmuser and group bin





5) Start your server back up and your plugin will be loaded up.
6) See Checking that your plugin has been correctly loaded into your FusionReactor environment to check if your plugin has been correctly loaded.

Configuring your environment so that the plugin is added to future FusionReactor instances

As mentioned in the Description this article provides a use case scenario.

1) Obtain the plugin from the FusionReactor plugins download page, click here to be taken to the page. For this scenario we would download the FusionReactor Notification Generator plugin.
2) Copy the plugin that you downloaded in step 1 into the plugins-deploy directory in FusionReactor. The plugins-deploy directory is located in <FusionReactor_Home>/etc/plugins-deploy. For this scenario it is located at C:\FusionReactor\etc\plugins-deploy.
3) If you are running FusionReactor on a UNIX based machine (Linux, Solaris, MAC or Generic UNIX) then you need to follow this step, if you are running FusionReactor on a Windows machine you can skip to step 4. When you copy over the plugin to your plugins-deploy directory it may not be owned by the same user and group as the other plugins. For example all the plugins may be owned by nobody and the plugin you downloaded may be owned by root. When you use FRAM to create a FusionReactor instance it copies the plugins from the plugins-deploy directory to the plugins directory of the newly created instance. If FRAM is running as nobody and the newly added plugin is owned by root then it will not be able to copy over the plugin when an instance is added. Simply change the user and group of the plugin to be that of the other plugins. Step 4 in the Adding a plugin to a FusionReactor instance section explains in detail how to do this.
4) Whenever a FusonReactor instance is created, it will come bundled with the newly added plugin.
5) See Checking that your plugin has been correctly loaded into your FusionReactor environment to check if the plugin has been correctly loaded into your newly created FusionReactor instance.

Checking that your plugin has been correctly loaded into your FusionReactor environment

1) Access the FusionReactor instance that contains the newly added plugin.
2) Navigate to Plugins > All Bundles
3) The All Bundles page lists all the FusionReactor bundles. A plugin is a bundle so it will be listed on here. Locate your bundle in the list and check that the status is listed as Active. If this is true then the plugin has successfully been loaded.
4) If your plugin is not listed as Active or it isn’t listed at all check the OSGi Log (Plugins > OSGi Log) for clues as to what went wrong. Also review all the steps you performed. It is a common mistake to add the plugin to the wrong FusionReactor instance.


The Notification Generator plugin was successfully added


How to use the Notification Generator Plugin.

See the FusionReactor Notification Generator Plugin documentation.

Issue Details

Type: DevNet
Issue Number: FR-2832
Components: Documentation
Environment:
Resolution: Unresolved
Added: 28/06/2012 15:34:18
Affects Version:
Fixed Version: 5.0.doc
Server:
Platform:
Related Issues: None

[frs-233] FusionReactor Nagios Plugin

FusionReactor Nagios Plugin

What is Nagios?

"Nagios is an enterprise-class monitoring solution for hosts, services, and networks released under an Open Source license."

Source: http://www.nagios.org, March 12th 2009

Many companies use Nagios throughout the enterprise to alert them of operational abnormalities. This plugin allows you leverage the unique monitoring capabilities of FusionReactor from within your existing Nagios environment.

Nagios Exchange

Plugin Details

This is a Perl plugin for the Nagios monitoring system to allow monitoring of your J2EE application through the FusionReactor software.

You can monitor & track high level metrics (instance CPU, heap memory, JDBC calls, average request time, etc) from within Nagios. If/When an issue is alerted from Nagios, you can use FusionReactor to investigate further.

Monitoring ColdFusion with Nagios

FusionReactor can monitor any type of J2EE server. ColdFusion runs on a J2EE server meaning that you can monitor your ColdFusion application with Nagios using FusionReactor and this plugin.

You can also monitor your Railo server with Nagios or OpenBD (Open BlueDragon) using this Nagios plugin.

Requirements

System to be monitored (J2EE server)

  • FusionReactor Enterprise Edition

Monitoring Host (Nagios server)

The following modules can easily be installed via CPAN. Further instructions are available in the documentation:

  • Nagios::Plugin
  • File::Basename
  • LWP::UserAgent
  • Digest::MD5
  • MIME::Base64
  • XML::XPath
  • XML::XPath::XMLParse

Latest Version

Latest Stable: Nagios Plugin 1.0

Download
Documentation

Changelog

1.0 – Initial release

Issue Details

Type: DevNet
Issue Number: FRS-233
Components: Compression, Content Filters, CPU + Memory, Crash Protection, Enterprise Dashboard, FR Enterprise Dashboard Desktop Application, FusionReactor Settings, Installer, JDBC, License + Activation, Logging, Metrics, Request Managment, Thread Management
Environment:
Resolution: Fixed
Last Updated: 25/Aug/15 4:32 PM
Affects Version:
Fixed Version: 1.0, 2.0, 2.0.3, 2.0.4, 3.0, 3.0.1, 3.5, Pending
Server:
Platform: Windows XP, Windows 2000, Windows 2003, Linux, MacOS, Solaris, Windows Vista, Windows x64, AIX, Windows 7, Windows 2008
Related Issues:

EULA V2 – FusionReactor 5

INTERGRAL SOFTWARE END USER LICENSE AGREEMENT (“EULA”)

THE FOLLOWING EULA APPLIES TO FUSIONREACTOR VERSION 5 AND ITS MINOR/MICRO UPDATES ONLY

IMPORTANT: CAREFULLY READ THE FOLLOWING LICENSE AGREEMENT. THIS
END USER LICENSE AGREEMENT (“EULA”) IS A LEGAL AGREEMENT BETWEEN
YOU (EITHER AN INDIVIDUAL OR, IF PURCHASED OR OTHERWISE ACQUIRED
BY OR FOR AN ENTITY, AN ENTITY) AND INTERGRAL. YOU ACCEPT AND
AGREE TO BE BOUND BY THE TERMS OF THIS AGREEMENT BY SELECTING THE
“ACCEPT” OPTION OR DOWNLOADING THE SOFTWARE OR BY INSTALLING,
USING, OR COPYING THE SOFTWARE. IF YOU DO NOT AGREE TO BE BOUND
BY THESE TERMS THEN DO NOT INSTALL, COPY, DOWNLOAD OR OTHERWISE
USE THE SOFTWARE. THIS EULA SHALL APPLY ONLY TO THE SOFTWARE
SUPPLIED BY INTERGRAL HEREWITH REGARDLESS OF WHETHER OTHER
SOFTWARE IS REFERRED TO OR DESCRIBED HEREIN.

Definitions

“INTERGRAL” means INTERGRAL Information Solutions GmbH and its
licensors, if any.

“Developer Version” means a version or edition of the Software to
be used only for design, development and evaluation purposes.

“Free Version” means a version or edition of the Software that
may have limited features, and may stop operating after a given
amount of time.

“Trial Version” means a version or edition of the Software to be
used only for review, demonstration and evaluation purposes. The
Trial Version may have limited features, and may stop operating
after a given amount of time.

“Full Version” means a version or edition of the Software that is
not a Developer Version nor a Trial Version of the Software nor a
Free Version of the Software.

“Accessible Code” means source code that is unprotected and
accessible.

“Protected Code” means any source code that is protected against
access by INTERGRAL or a third party and is not accessible under
this EULA.

“Fees” mean all fees and expenses payable by the Licensee to
INTERGRAL in acquiring the Software and as applicable any
Subscription or User Licenses.

“Software” means only the INTERGRAL software and third party
software programs, in each case, supplied by INTERGRAL together
with this EULA, including its Accessible Code and Protected Code
and any corresponding documentation, online or electronic
documentation, printed materials, and associated media. Any
updates to such Software that you are entitled to receive and
that have been provided to you by INTERGRAL shall also mean
Software for purposes of this Agreement.

License Grant
The Software is subject to the terms and conditions of this
Agreement. INTERGRAL hereby grants, and you accept, the right and
license to install and use the Software provided that you do not
use, copy, or install the Software on more than the number of
computers permitted by license, or permit the use, copying, or
installation by more users on more computers than the number
permitted by the license.

You may make one copy of the Software in machine-readable form
solely for backup purposes. You must reproduce on any such copy
all copyright notices and any other proprietary legends on the
original copy of the Software.

The Software is protected by copyright laws and international
copyright treaties, as well as other intellectual property laws
and treaties. INTERGRAL reserves all intellectual property
rights, including copyrights and trademark rights. Your license
rights under this EULA are non-exclusive.

License Restrictions

Restrictions on Use
Other than as expressly set forth above, you may not make or
distribute copies of the Software, or electronically transfer the
Software from one computer to another or over a network.

You may not decompile, “reverse-engineer”, disassemble, or
otherwise attempt to derive the source code for the Software.

You may not use the database portion of the Software in
connection with any software other than the Software.

You shall not (A) in the aggregate, install or use more than one
copy of the Trial Version of the Software, (B) download the Trial
Version of the Software under more than one username, (C) alter
the contents of a hard drive or computer system to enable the use
of the Trial Version of the Software for an aggregate period in
excess of the trial period for one license to such Trial Version,
(D) disclose the results of software performance benchmarks
obtained using the Trial Version to any third party without
INTERGRAL’s prior written consent, (E) use the Trial Version for
any application deployment or ultimate production purpose, or (F)
use the Trial Version of the Software for a purpose other than
the sole purpose of determining whether to purchase a license to
a Full Version or a Developer Version of the software; provided,
however, notwithstanding the foregoing, you are strictly
prohibited from installing or using the Trial Version of the
Software for any commercial training purpose.

You shall not use the Developer Version for any application
deployment in a live or stand-by production environment or
staging environment, in each case, including, without limitation,
in any environment accessed by application end- users, including,
but not limited to, servers, workstations, kiosks, and mobile
computers. You shall not use the Software to develop any
application having the same primary function as the Software.

Subject to the terms and conditions of this Agreement you must at
all times ensure that the Software is not used for rental,
timesharing, subscription service, hosting, outsourcing, or as
part of a service or consulting practice to a third-party,
without first obtaining the express written consent of INTERGRAL.

Restrictions on Alteration
You may not alter, merge, adapt, translate or modify the Software
or create any derivative work of the Software or its accompanying
documentation. Derivative works include but are not limited to
translations. You may not alter any files or libraries in any
portion of the Software. You may not reproduce the database
portion or create any tables or reports relating to the database
portion.

Restrictions on Copying
You may not copy any part of the Software except to the extent
that licensed use inherently demands the creation of a temporary
copy stored in computer memory and not permanently affixed on
storage medium. You may make one archival copy which must be
stored on a medium other than a computer hard drive.

Restrictions on Transfer
Without first obtaining the express written consent of INTERGRAL,
you may not assign your rights and obligations under this
Agreement, or redistribute, encumber, sell, rent, lease,
sublicense, or otherwise transfer your rights to the Software.
You may not sell or transfer any Software purchased under a
volume discount. You may not sell or transfer any Trial Version
or Free Version of the Software.

Permitted Fixes
Notwithstanding anything else in this EULA but subject to the
terms and conditions contained herein, the Licensee is permitted
to modify the Accessible Code in the Software to develop bug
fixes, customizations or additional features solely for their
internal purposes of using the Software.

Upgrades
If this copy of the Software is an upgrade from an earlier
version of the Software, it is provided to you on a license
exchange basis. You agree by your installation and use of this
copy of the Software to voluntarily terminate your EULA with
respect to such prior license to the Software and that you will
not continue to install or use such prior license of the Software
or transfer it to another person or entity.

Ownership
The foregoing grants of rights give you limited license to use
the Software. Except as expressly provided in this Agreement,
INTERGRAL remain the owner of all right, title and interest in
the Software. All rights not specifically granted in this EULA
are reserved by INTERGRAL.

Fees
The Licensee must pay all Fees by their due date. Failure to pay
Fees by the due date will result in the immediate termination of
the licenses granted under this EULA.

You are responsible for reviewing the Software’s website for
changes in the fees, including, but not limited to, subscription
fees and payment terms.

TERMINATION
Without prejudice to any other rights and in addition to any
other termination rights in this EULA, INTERGRAL may terminate
this EULA if the Licensee fails to comply with the terms and
conditions of this EULA. Immediately upon termination of a
license granted under this EULA, the Licensee must at its own
cost remove all copies of the Software including all Accessible
Code from its computer systems and provide INTERGRAL with written
certification that it has destroyed all copies of the Software
including all Accessible Code in its possession, custody or
control.

LIMITED WARRANTY AND DISCLAIMER
TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW IN THE
JURISDICTION IN WHICH THE SOFTWARE IS PROVIDED, INTERGRAL
PROVIDES THE SOFTWARE AS IS AND WITH ALL FAULTS, AND EXCEPT
OTHERWISE EXPRESSLY CONTAINED IN THE EULA, HEREBY DISCLAIM ALL
OTHER WARRANTIES AND CONDITIONS, WHETHER EXPRESS, IMPLIED OR
STATUTORY.

INTERGRAL MAKES NO WARRANTY THAT THE SOFTWARE WILL MEET YOUR
REQUIREMENTS OR OPERATE UNDER YOUR SPECIFIC CONDITIONS OF USE.
INTERGRAL MAKES NO WARRANTY THAT OPERATION OF THE SOFTWARE WILL
BE SECURE, ERROR FREE, OR FREE FROM INTERRUPTION. YOU MUST
DETERMINE WHETHER THE SOFTWARE SUFFICIENTLY MEETS YOUR
REQUIREMENTS FOR SECURITY AND UNINTERRUPTABILITY. YOU BEAR SOLE
RESPONSIBILITY AND ALL LIABILITY FOR ANY LOSS INCURRED DUE TO
FAILURE OF THE SOFTWARE TO MEET YOUR REQUIREMENTS. INTERGRAL WILL
NOT, UNDER ANY CIRCUMSTANCES, BE RESPONSIBLE OR LIABLE FOR THE
LOSS OF DATA ON ANY COMPUTER OR INFORMATION STORAGE DEVICE.
INTERGRAL DISCLAIM ALL OTHER WARRANTIES AND REPRESENTATIONS,
WHETHER EXPRESS, IMPLIED, OR OTHERWISE, INCLUDING THE WARRANTIES
OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. THE
SOFTWARE IS NOT DESIGNED, INTENDED OR LICENSED FOR USE IN
HAZARDOUS ENVIRONMENTS REQUIRING FAIL- SAFE CONTROLS, INCLUDING
WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR
OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR
COMMUNICATION SYSTEMS, AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR
WEAPONS SYSTEMS. INTERGRAL SPECIFICALLY DISCLAIMS ANY EXPRESS OR
IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSES.

INTERGRAL PROVIDES NO REMEDIES OR WARRANTIES, WHETHER EXPRESS OR
IMPLIED, FOR THE TRIAL VERSION AND THE FREE VERSION OF THE
SOFTWARE. THE TRIAL VERSION AND THE FREE VERSION OF THE SOFTWARE
ARE PROVIDED “AS IS” AND WITH ALL FAULTS AND HEREBY DISCLAIM ALL
OTHER WARRANTIES AND CONDITIONS, WHETHER EXPRESS, IMPLIED OR
STATUTORY.

UNLESS OTHERWISE EXPLICITLY AGREED TO IN WRITING BY INTERGRAL,
INTERGRAL MAKES NO OTHER WARRANTIES, EXPRESS OR IMPLIED, IN FACT
OR IN LAW, INCLUDING, BUT NOT LIMITED TO, ANY IMPLIED WARRANTIES
OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE OTHER THAN
AS SET FORTH IN THIS AGREEMENT OR IN THE LIMITED WARRANTY
DOCUMENTS PROVIDED WITH THE SOFTWARE.

IF APPLICABLE LAW REQUIRES ANY WARRANTIES WITH RESPECT TO THE
SOFTWARE, ALL SUCH WARRANTIES ARE LIMITED IN DURATION TO THIRTY
(30) DAYS FROM THE DATE OF DELIVERY.

NO ORAL OR WRITTEN INFORMATION OR ADVICE GIVEN BY INTERGRAL, ITS
DEALERS, DISTRIBUTORS, AGENTS OR EMPLOYEES SHALL CREATE A
WARRANTY OR IN ANY WAY INCREASE THE SCOPE OF ANY WARRANTY
PROVIDED HEREIN.

LIMITED REMEDY
YOUR REMEDY FOR A BREACH OF THIS AGREEMENT OR OF ANY WARRANTY
INCLUDED IN THIS AGREEMENT IS THE CORRECTION OR REPLACEMENT OF
THE SOFTWARE. SELECTION OF WHETHER TO CORRECT OR REPLACE SHALL BE
SOLELY AT THE DISCRETION OF INTERGRAL. INTERGRAL RESERVES THE
RIGHT TO SUBSTITUTE A FUNCTIONALLY EQUIVALENT COPY OF THE
SOFTWARE AS A REPLACEMENT. IF INTERGRAL IS UNABLE TO PROVIDE A
REPLACEMENT OR SUBSTITUTE SOFTWARE OR CORRECTIONS TO THE
SOFTWARE, YOUR SOLE ALTERNATE REMEDY SHALL BE A REFUND OF THE
PURCHASE PRICE FOR THE SOFTWARE EXCLUSIVE OF ANY COSTS FOR
SHIPPING AND HANDLING.

ANY CLAIM MUST BE MADE WITHIN THE APPLICABLE WARRANTY PERIOD. ALL
WARRANTIES COVER ONLY DEFECTS ARISING UNDER NORMAL USE AND DO NOT
INCLUDE MALFUNCTIONS OR FAILURE RESULTING FROM MISUSE, ABUSE,
NEGLECT, ALTERATION, MISAPPLICATION, PROBLEMS WITH DATA NETWORKS,
PROBLEMS WITH ELECTRICAL POWER, ACTS OF NATURE, UNUSUAL
TEMPERATURES OR HUMIDITY, IMPROPER INSTALLATION, DAMAGE TO MEDIA
OR DAMAGE DETERMINED BY INTERGRAL TO HAVE BEEN CAUSED BY YOU. ALL
LIMITED WARRANTIES ON THE SOFTWARE ARE GRANTED ONLY TO YOU AND
ARE NON- TRANSFERABLE.

YOU AGREE TO INDEMNIFY AND HOLD INTERGRAL HARMLESS FROM ALL
CLAIMS, JUDGMENTS, LIABILITIES, EXPENSES, OR COSTS ARISING FROM
YOUR BREACH OF THIS AGREEMENT AND/OR ACTS OR OMISSIONS. THIS
REMEDY IS THE SOLE AND EXCLUSIVE REMEDY AVAILABLE TO YOU FOR
BREACH OF EXPRESS OR IMPLIED WARRANTIES WITH RESPECT TO THE
SOFTWARE AND RELATED DOCUMENTATION.

LIMITATION OF LIABILITY
UNDER NO CIRCUMSTANCES SHALL INTERGRAL, ITS DIRECTORS, OFFICERS,
EMPLOYEES AND AGENTS BE LIABLE TO YOU OR ANY OTHER PARTY FOR
INDIRECT, CONSEQUENTIAL, SPECIAL, INCIDENTAL, PUNITIVE, OR
EXEMPLARY DAMAGES OF ANY KIND (INCLUDING LOST REVENUES OR PROFITS
OR LOSS OF BUSINESS) RESULTING FROM THIS AGREEMENT, OR FROM THE
FURNISHING, PERFORMANCE, INSTALLATION, OR USE OF THE SOFTWARE,
WHETHER DUE TO A BREACH OF CONTRACT, BREACH OF WARRANTY, OR THE
NEGLIGENCE OF INTERGRAL OR ANY OTHER PARTY, EVEN IF INTERGRAL IS
ADVISED BEFOREHAND OF THE POSSIBILITY OF SUCH DAMAGES. TO THE
EXTENT THAT THE APPLICABLE JURISDICTION LIMITS INTERGRAL’S
ABILITY TO DISCLAIM ANY IMPLIED WARRANTIES, THIS DISCLAIMER SHALL
BE EFFECTIVE TO THE MAXIMUM EXTENT PERMITTED. INTERGRAL’S
LIABILITY UNDER THIS AGREEMENT WILL NOT, IN ANY EVENT, EXCEED THE
LICENSE FEES YOU PAID FOR THE SOFTWARE, IF ANY.

Indemnification
To the maximum extent permitted by law, you agree to defend,
indemnify and hold harmless INTERGRAL, its directors, officers,
employees and agents from and against any and all claims,
actions, suits or proceedings, as well as any and all losses,
liabilities, damages, costs and expenses (including reasonable
attorneys fees) arising out of or accruing from (a) your use of
the Software, (b) any application you develop on the Software
that infringes any copyright, trademark, trade secret, trade
dress, patent or other intellectual property right of any person
or defames any person or violates their rights of publicity or
privacy, and (c) any non- compliance by you with this License
Agreement.

Confidentiality
The Software contains trade secrets and proprietary know-how that
belong to INTERGRAL and it is being made available to you in
strict confidence. ANY USE OR DISCLOSURE OF THE SOFTWARE, OR OF
ITS ALGORITHMS, PROTOCOLS OR INTERFACES, OTHER THAN IN STRICT
ACCORDANCE WITH THIS LICENSE AGREEMENT, MAY BE ACTIONABLE AS A
VIOLATION OF OUR TRADE SECRET RIGHTS.

Publicity Rights
Licensee grants INTERGRAL the right to include Licensee as a
customer in Software promotional material. Licensee can deny
INTERGRAL this right at any time by submitting a written request
via email to SALES@INTERGRAL.COM, requesting to be excluded from
Software promotional material. Requests made after purchasing may
take thirty (30) calendar days to process.

Third Party Software
Any software provided along with the Software that is associated
with a separate license agreement is licensed to you under the
terms of that license agreement. This license does not apply to
those portions of the Software. Copies of these third party
licenses are included in all copies of the Software. By accepting
this EULA, you are also accepting the additional terms.

RESTRICTIONS
United States: If the Software is acquired by the Licensee in the
United States, the Licensee acknowledges: (a) the Software is
subject to U.S. export jurisdiction and agrees to comply with all
applicable international and national laws that apply to the
Software, including the U.S. Export Administration Regulations,
as well as end-user, end- use, and destination restrictions
issued by U.S. and other governments and notwithstanding the
above; and (b) the provisions of the USA Uniform Computer
Information Transaction Act do not apply to this EULA.

General: The export of the Software from the country of original
purchase may be subject to control or restriction by applicable
local law. Licensee is solely responsible for determining the
existence and application of any such law to any proposed export
and for obtaining any needed authorization. Licensee agrees not
to export the Software from any country in violation of
applicable legal restrictions on such export.

Governing Law, Jurisdiction and Costs
This EULA is governed by the laws of Baden-Wuerttemberg, Germany
without regard to Baden-Wuerttemberg’s conflict or choice of law
provisions. Exclusive jurisdiction and place of performance is
Boeblingen, Germany, as long as permitted by applicable law. The
United Nations Convention for the International Sale of Goods
shall not apply.

Changes to the License Agreement
INTERGRAL may make changes to the License Agreement as it
distributes new versions of the Software. When these changes are
made, INTERGRAL will make a new version of the License Agreement
available on the website where the Software is made available.

Entire Agreement and Severability
This EULA is the entire agreement between INTERGRAL and you, and
supersedes all prior or contemporaneous agreements or
understandings, whether oral or written any other communications
or advertising with respect to the Software; this EULA may be
modified only by written agreement signed by authorized
representatives of both you and INTERGRAL. No INTERGRAL dealer or
agent is authorized to make any amendment to this EULA.

If any provision of this EULA shall be held to be invalid or
unenforceable, the remainder of this EULA shall remain in full
force and effect. All rights not expressly granted in this
agreement are retained by INTERGRAL. To the extent any express or
implied restrictions are not permitted by applicable laws, these
express or implied restrictions shall remain in force and effect
to the maximum extent permitted by such applicable laws. The
failure or delay of INTERGRAL to exercise any of its rights under
this EULA or upon any breach of this EULA shall not be deemed a
waiver of those rights or of the breach. You agree that any
varying or additional terms contained in any purchase order or
other written notification or document issued by you in relation
to the Software licensed hereunder shall be of no effect.

INTERGRAL and other trademarks contained in the Software are
trademarks or registered trademarks of INTERGRAL Information
Solutions GmbH. Third party trademarks, trade names, product
names and logos may be the trademarks or registered trademarks of
their respective owners. You may not remove or alter any
trademark, trade names, product names, logo, copyright or other
proprietary notices, legends, symbols or labels in the Software.
This EULA does not authorize you to use INTERGRAL’s or its
licensors’ names or any of their respective trademarks.

[frs-334] Railo Extension for FusionReactor v5

About

This is a Railo Extension store plugin to simplify deployment of the FusionReactor server monitor.

What does the extension do?

  • Email a trial license to the installer
  • Deploy latest version of FusionReactor (or fall-back to the bundled version for servers with no direct internet access)
  • Automatically update container JVM arguments
  • Offer an uninstall option

Supported Platforms / System Requirements

For the FusionReactor software system requirements, please see https://www.fusion-reactor.com/system-requirements/.

The extension should function in all recent Railo releases but has been most thoroughly tested with Railo 4.1.2.005 final (Endal) using both the Tomcat and Jetty (aka Railo Express) deployments on Windows Server 2012 and CentOS 6.5 64-bit.

Help Videos

http://www.youtube.com/playlist?list=PLDIpVdHiiEMdxsppX-EpS9dFpZdGM3_hn

Issue Details

Type: DevNet
Issue Number: FRS-334
Components: Installer, Instance Manager
Environment:
Resolution: Fixed
Last Updated: 13/Mar/14 3:35 PM
Affects Version:
Fixed Version: 5.0.0
Server:
Platform:
Related Issues:

FusionReactor v5 Java Server Monitor – A feature tour

A 20 minute feature tour of FusionReactor v5 visiting:

  • Enterprise Dashboard
  • Web Metrics
  • Real-Time Running Request List
  • Request History
  • Request Details
  • CPU Thread Time
  • TCP/IP Stream Metrics
  • HTTP Headers
  • JDBC Transactions
  • HTTPClient/WebService Transactions
  • Longest Requests (since server started)
  • Slowest Requests (recent pages longer than threshold)
  • HTTP 500 Server Error Details
  • User Experience Monitoring (UEM) (e.g. client network & browser rendering time)
  • Custom Transactions (e.g. tracking custom API calls)
  • Custom Metrics (tracking custom business metrics – e.g. revenue)
  • Custom Dashboard (e.g. revenue vs page execution time chart)
  • Metric History (e.g. CPU last hour/day/week; pan/zoom; etc)
  • Both Heap & Non-Heap Memory Spaces (e.g. PermGen)
  • Garbage Collection Timing
  • Thread State Charts (e.g. identifying locking contention)
  • EnGuard Crash Protection (e.g. alerts before failure or prevents server from failing)
  • Daily Report Email (e.g. managers don’t need to login for overview metrics)
  • Log rotation & archiving (including JVM logs)
  • Info/Warn/Error Notification system
  • Desktop, iOS, Android dashboard application
  • Stack trace running request (e.g. see what line of code is currently being executed / where a slow page is stuck)

[frs-228] Using FusionReactor’s JDBC Driver Wrapper With ColdFusion 9 ORM

Using FusionReactor's JDBC Driver Wrapper With ColdFusion 9 ORM

FusionReactor's JDBC Driver Wrapper is a great addition to ColdFusion 9's Object-Relational Modeling capabilities. You can use it to spy on what Hibernate (ColdFusion's ORM provider) is really doing to your database.

This article doesn't go into detail about what ORM is, or how it works – there are many posts and articles on the web which cover this in detail:

Why Use the JDBC Driver Wrapper in Your ORM Configuration?

Adobe's integration of the third-party Hibernate framework brings ORM functionality to your CFC-based applications. This brings with it some new, important concerns for ColdFusion developers:

  • How is Hibernate converting my entity operations to SQL?
  • Why are they running so slowly?
  • How is Hibernate locking the DB?

You can use the setting Application.cfc setting this.ormsettings.logSQL to have Hibernate dump its SQL to the log as it's created, but you'll soon find the log is overflowing with data.

  • FusionReactor's JDBC Driver Wrapper associates your queries with the precise request – and ultimately CFC/CFM line of code – in which they run.
  • You can use the JDBC tab in FusionReactor's Request View to see what ran, how long it took, and how many rows came back – great for tuning and catching runaway queries.

How Do I Set This Up?

Getting this working is simple, just follow the steps below.

Get FusionReactor

  • Download and install FusionReactor – you'll need version 3.5.0 or better. You can get a 10-day free trial here.

Use FusionReactor's JDBC Driver Wrapper

  • You'll need to create a wrapped datasource. This won't replace your original datasource, but it will allow our lightweight wrapper to spy on he interaction between ColdFusion, Hibernate and the database.
  • You can use the instructions in the FusionReactor JDBC Driver Wrapper User Guide, or download and use our free tool (just run the tool and have it wrap your datasource automatically).
  • Once you've got a wrapped datasource, change your ORM datasource in Application.cfc to point to the new datasource.
	this.datasource = "orm_WRAPPED";

.. for example.

That's it!

Spying on Hibernate

Once you've installed the FusionReactor JDBC Driver Wrapper, and adjusted your Application.cfc to point to the wrapped datasource, you can have a look at the collected data. We ran the 01_createmusician.cfm script from Mark Mandel's introductory app (from Introducing ORM in Adobe ColdFusion 9), with this.ormsettings.logSQL = true turned on in our Application.cfc.

What came out in the log was:

Hibernate: 
    insert 
    into
        Musician
        (name, age) 
    values
        (?, ?)
Hibernate: 
    select
        currval('Musician_musicianID_seq')

But that's not only what ran – the log isn't showing you everything. Inspecting the JDBC tab of the request in FusionReactor actually shows us exactly what's going on:

There's actually a whole bunch of overhead. We turned on "Record In Order" in FusionReactor's JDBC Settings, so this list is in time order – including a whole set of alters, drops, creates (JDBC transaction 1), then the load of sample data (transactions 2 and 3), the actual insert from the CFM page itself (transactions 4 and 5), and the select from the page for the dump (transaction 6).

Conclusion

We think FusionReactor's JDBC Driver Wrapper is an awesome tool to spy on exactly how Hibernate and ColdFusion 9 is interacting with your database. Object-Relational Modeling is going to revolutionize how you deal with your databases, and FusionReactor is going to make your life easier in analyzing and solving problems.

Issue Details

Type: DevNet
Issue Number: FRS-228
Components: JDBC
Environment:
Resolution: Fixed
Last Updated: 08/Sep/11 10:50 AM
Affects Version:
Fixed Version: 3.5, 4.0.0
Server:
Platform:
Related Issues:

[frs-300] FusionReactor Wrapper Tool for FusionReactor 4.5.x and above

JDBC Wrapper Tool for FusionReactor 4.5.x and above

Users using FusionReactor 4.0.10 or lower should use the original wrapper found here.

The JDBC tool is designed to provide an automated interface to configure the FusionReactor JDBC Wrapper. The tool uses the CF admin API introduced in CF7 to add/update your DSN entries. Once installed, the JDBC wrapper doesn't break if your FusionReactor license expires (trial or subscription).

Note: The tool is still under active development. Though we have used this succesfully we cannot guarantee it will function in all cases. Please check below for our tested compatibility chart.

Requirements

FusionReactor
CF7 or above OR A Compatible CFML Engine

Latest Version

The latest versions available for download are:

Latest Stable: 1.0.1
jdbc_tool_v1.0.1.zip

Usage

FusionReactor 4.5.x now supports a classpath option in the JDBC URL. For non-macromedia drivers (those that previously required the split-jar method) you can supply the path to your JDBC driver jar file and FusionReactor will function correctly. The split-jar method has been completely removed with FusionReactor 4.5.x and so users are required to perform this update.

  1. Download the updated FusionReactor Wrapper Tool
  2. Copy the fr_jdbc_wrapper.cfm file to /CFIDE/administrator/fr_jdbc_wrapper.cfm on your server, ensuring you have permission to run it.
  3. Navigate to this page via your browser.
    • If you have any wrapped data sources from older versions of this tool, you should unwrap them now. Click the "Unwrap" link at the top left and continue though the steps of the tool.
  4. Select the data sources you wish to wrap.
  5. If a text field is visible in the "Driver Jar" column then you are required to supply a canonical path to the JDBC driver jar file. EG:
    • CF10: C:ColdFusion10cfusionlibmysql-connector-java-commercial-5.1.17-bin.jar
    • CF9 Multi-server: C:JRun4libmysql-connector-java-commercial-5.0.5-bin.jar
    • CF9 Stand-alone: C:ColdFusion9libmysql-connector-java-commercial-5.1.11-bin.jar
  6. You can click the "Use for all of this type" checkbox to use the same driver file for all data sources of that type (e.g. all MySQL data sources). This is not recommended for Derby data sources.
  7. Once you have entered the correct paths to your driver jars, click next and navigate through the rest of the tool to wrap your data sources

Compatibility Notes

Railo

  • There is an additional requirement for Railo. Please (temporarily, whilst running the tool) set the Server Administrator->Security->Access->General->Access Read setting to "open".

Tested Compatibility

Adobe CF 7,0,2,142559

  • Microsoft SQL Server
  • ODBC Socket

Adobe CF 8,0,1,195765

  • Apache Derby Client
  • Microsoft SQL Server
  • MySQL (4/5)
  • Apache Derby Embedded (Requires CF Restart)
  • ODBC Socket
  • PostgreSQL
  • Other JDBC Driver
  • Sybase

Adobe CF 9,0,0,251028

  • Apache Derby Client
  • Microsoft SQL Server
  • MySQL (4/5)
  • Apache Derby Embedded (Requires CF Restart)
  • ODBC Socket
  • PostgreSQL
  • Other JDBC Driver
  • Sybase

Adobe CF 10

  • Apache Derby Client
  • Microsoft SQL Server
  • MySQL (4/5)
  • Apache Derby Embedded (Requires CF Restart)
  • Other JDBC Driver

Railo 4.0.4.001

  • MSSQL – Microsoft SQL Server (Vendor Microsoft)
  • MSSQL – Microsoft SQL Server (Vendor jTDS)
  • MySQL

Issue Details

Type: DevNet
Issue Number: FRS-300
Components: JDBC
Environment:
Resolution: Fixed
Last Updated: 01/Jul/13 12:56 PM
Affects Version: 4.5.0
Fixed Version: 4.5.0
Server:
Platform:
Related Issues:

Announcing Ortus ProfileBox – a ColdBox profiling / monitoring extension for FusionReactor 5

profilebox logo Ortus ProfileBox is a ColdBox module that will provide you with profiling, metrics, CacheBox reports, custom object metrics, exception notifications, LogBox integration and much more for any ColdBox 3.5 application.

ProfileBox is available for FusionReactor 5.x – for more details go here – www.goprofilebox.com/

Capabilities

  • Profile and take metrics of any ColdBox Event including ability to trace hierarchical executions, renderings and handler results
  • Profile ColdBox User Experience metrics from time spent in ColdBox code, to Client Code to Network time
  • Profile rendering of any layout or view
  • Ability to trace the request collections via any ColdBox event requested
  • Ability to profile any WireBox-managed object via our very own method and component annotations
  • LogBox appender for creating FusionReactor notifications
  • LogBox appender for creating FusionReactor request tracers
  • WireBox mappings for interacting with FusionReactor tracers and notifications a-la-carte
  • Ability to profile all caches monitored by CacheBox
  • Exception handling that can send your exceptions to the FusionReactor Notifications

[frs-239] Automatically login to FusionReactor with a Cookie

Background

FusionReactor provides several user roles each allowing a different set of actions. The Observer role allows users view only access to the metrics FusionReactor is gathering.

In some organisations, it could be beneficial to allow users to automatically login as the Observer user. This can be achieved by setting a cookie on the client browser – this process is shown here.

Process Overview

  1. Find the Cookie



    • Login to FusionReactor in the normal way
    • Find the cookie in your browser / debugging-proxy
    • Save this information for later



  2. Logout of FusionReactor



  3. Create a login portal page




    Note: This page must be able to write cookies to the same (or parent) domain name



  4. Test

Screencast / Video How-To

@video(FRscreencast.jpg,fr_autologin4.swf,640,498)

Sample Code

autologin.html
<html>
	<head>
		<title>FusionReactor Auto-Login</title>
	</head>
	<body>
		<script type="text/javascript">
			document.cookie =
				'FusionReactorAuthorization.cfusion.jrun4.DJS02WORK3' +
				'=' +
				'Administrator:E69315267C51BB306D16D719107C832A' + 
				'; expires=Sat, 1 Jan 2011 00:00:00 UTC; path=/';
			window.location = 
				'http://localhost:8088/fusionreactor/';
		</script>
	</body>
</html>

Issue Details

Type: DevNet
Issue Number: FRS-239
Components: FusionReactor Settings
Environment:
Resolution: Fixed
Last Updated: 20/Nov/09 2:52 PM
Affects Version: 3.5
Fixed Version: 3.5
Server:
Platform:
Related Issues:

[frs-271] Understanding FusionReactor’s Timeout Protection

Introduction

We're sometimes asked about the timings for FusionReactor's Timeout Protection, part of the Crash Protection system. The idea behind this crash protection is that it places a hard upper limit on the length of time requests can run. You might find, however, that requests take a few seconds longer to be killed than you originally thought. Here's why.

Kill Strategies

After the time limit is reached, three strategies are employed by the Request Assassin to kill the request:

  • Soft Kill
    If the request makes any output to the page whatsoever, it will be killed. This is done by intercepting the call which writes data back to the network. The Request Assassin waits for 2 seconds for the request to write output, before trying the next strategy.
  • Interrupt
    We interrupt the thread in which the request runs. If the request is performing an interruptible operation (a call which can throw InterruptedException; sleeping, for instance), the exception will be raised. The Request Assassin waits for 1 second for the thread to process the interrupt – if it does so at all – before trying the final strategy.
  • Thread Stop
    The request is forcefully stopped by Java's thread stop mechanism. Although this isn't completely reliable – threads performing native operations will not be stopped, for instance – it works most of the time, and in fact there is no other way to kill a thread.

The Request Assassin

In addition to these delays, the Request Assassin doesn't run all the time: it wakes up every second, and checks whether there are any threads it should examine. If there are any, it starts to process them, employing the strategies above. If a strategy succeeds, it moves on to the next candidate. If not, it tries the next strategy, until the list of strategies is exhausted.

Because FusionReactor attempts to place as little load on the target system as possible, the candidates for kill are queued up. This is an additional source of delay – previous kill operations may have to be processed before the Request Assassin gets to the request of interest.

Worked Example

Let's look at a worked example, with Timeout Protection set to 1 second.

In the diagram, you can see (starting from the top timeline):

  • The flow of a request (blue).
  • The best possible timing of a crash protection (red).
  • The worst possible timing of a crash protection (red).

Best Possible Scenario

  • The Request Assassin wakes up at time T1 – the exact instant the request becomes eligible for kill. It immediately sets the Soft-Kill flag, and starts the soft kill delay, 2 seconds.
  • At time T3, the soft-kill delay expires, and the request is still alive, having not performed output. The thread is interrupted, and the Request Assassin waits for a further second.
  • At time T4, the request is still alive, so the Request Assassin performs a thread kill.

The request then dies, marked by the first red "X" in its timeline. If the request was performing native operations (i.e. using part of the Java language that's written in C), it will be killed as soon as it returns. One common native operation is blocking socket communication: this is performed in Java by a C library.

Worst Possible Scenario

The second timeline is much the same as the first, except the Request Assassin ran at time T0.9r, i.e. an instant before the request became eligible for kill at T1. The next time the Request Assassin runs is at time T2 (actually an instant before that), meaning the whole timeline starts 1 second later, at time T2, and completing with the kill at time T5.

Conclusion

We showed in this small article where the (up to) 3-second overhead in Timeout Protection comes from: a combination of soft-kill and interrupt delays, which allow us to try to stop a request without resorting to a hard kill.

Issue Details

Type: DevNet
Issue Number: FRS-271
Components: Crash Protection
Environment:
Resolution: Fixed
Last Updated: 22/Sep/11 3:36 PM
Affects Version:
Fixed Version: 4.0.0
Server:
Platform:
Related Issues: