1/31/2015

Coldfusion, Will not start and jvm.cfg


Coldfusion 9.0 relies upon a Java virtual machine to provide a host for its process. If it will not start the Java virtual machine may be missing things it depends on. In this case if the operating system Java package is updated and the Coldfusion jvm.cfg (referred to as jvm.config) refers to a static path for an old java package it can obscurely suggest the jvm.cfg might be corrupt. Although this is not the case, the Java package may be missing.

From the /opt/coldfusion9/logs/cfserver.log


The init.d startup script may refer to an explicit Java path and Java binary (but this is not the only location it may be set):

/etc/init.d/coldfusion -> /opt/coldfusion9/bin/coldfusion



The init.d script cfstart routine may prepare another file "jvm.config" for sourcing override settings

For example the jvm.config file may exist in:

/opt/coldfusion9/runtime/bin/jvm.config


And to get it ready a symlink is created in the

/opt/coldfusion9/runtime/bin

directory.

[NOTE: This is so that when the ELF binary "senses" or detects an optional jvm.config in its default execution directory it will automatically source its contents.]

Where $CFSTART is:

CFSTART='$SUCMDFILE -s /bin/sh $RUNTIME_USER -c "export PATH=$PATH:$CF_DIR/runtime/bin; export LD_LIBRARY_PATH=$LD_LIBRARY_PATH; cd $CF_DIR/runtime/bin; nohup $CF_DIR/runtime/bin/coldfusion9 -jar jrun.jar -autorestart -start coldfusion &"'
And /opt/coldfusion9/runtime/bin/coldfusion9 referred "to" in the CFSTART command string is an ELF binary that sources a jvm.config file

The jvm.config may contain an optional override at the top with appropriate "warnings":


Since the path /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.34.x86_64/jre/ is "explicit" and does not point at the convention in RHEL /usr/lib/jvm/jre which is normally
/usr/lib/jvm/jre -> /etc/alternatives/jre
/etc/alternatives/jre -> /usr/lib/jvm/jre-1.6.0-openjdk.x86_64
/usr/lib/jvm/jre-1.6.0-openjdk.x86_64 -> java-1.6.0-openjdk-1.6.0.34.x86_64/jre
and is updated by the alternatives method when updating the actual java runtime installed for the operating system.

Explicitly pathing is "brittle" and will break without warning when a regular # yum update command is run to update all the packages in a RHEL or like operating system.

Therefore, if you are being explicit in order to "control" the version of Java being used by an application, also be aware you may want to "pin" or "versionlock" a specific package so it isn't unintentionally updated without warning

$ sudo yum install yum-plugin-versionlock
 
Also be [aware] that RHEL5 and RHEL6 have different versionlock plugin pacakge names.



For RHEL5 it is:

# yum install yum-versionlock
# rpm -qa|grep java >> /etc/yum/pluginconf.d/versionlock.list

For RHEL6 it is:

# yum install yum-plugin-versionlock
# rpm -qa|grep java >> /etc/yum/pluginconf.d/versionlock.list
[consider if you versionlock a package; there are security implications if you do not regularly  update the package, this is a perfectly rational procedure however if you need more time to test]

Or be sure to keep the /opt/coldfusion9/runtime/bin/jvm.config file up to date when updating the operating system java version.

Or do not define it here (jvm.config) and allow the settings in the /etc/init.d/coldfusion9 startup script to take priority.

Unfortunately Adobe documentation demonstrating explictly choosing a Java version to host the Coldfusion process "other than" the Java jre that comes with the product is brief and general, to the point of not describing pitfalls relating to regular patching and updating for bug fixes and security matters.


 

1/09/2015

Plex, How to Integrate EyeTV and the Roku streaming stick


Plex is a common server and client distribution platform for hosting home theater content and serving it to your Computer, PC, Tablet or TV. It scans and indexes your existing Movies, TV Shows and Photos or Music and makes it accessible from your consumption device of choice. The Media Server can run on Windows, OSX or Linux. The Plex "Media" Server is installed on a computer and then managed through a web browser.


EyeTV is a common Over the Air broadcast recorder. It makes use of a capture device that receives the broadcast and converts it into media files on your PC or storage device. EyeTV also includes an Electronic Program Guide (EPG) like the TVGuide service and presents a Schedule of Upcoming shows from which to choose to record, and on going series subscriptions to capture all the shows of a series or season. EyeTV records a show as broadcast in its native streaming service format, usually a high resolution mpeg2 based TS type of file. These are often quite large clocking in at 4 to 5 GB per hour of content.


Roku streaming stick, is a second generation HDMI dongle that fits in the HDMI port of a monitor or TV. It connects to a local WiFi network and offers up content as a menu of "Channels" which are applications that can browse and stream content from network servers either via a Web Browser, DLNA, Miracast or by using a Channel app.



RARflix is a free Roku Channel app in the Roku "Channel Store" for autodiscovering a Plex media server on the local network and accessing the media through the standard Roku interface.


The steps to integrating RARflix, Roku and EyeTV with Plex are:

1. Install Plex for OSX
2. Install EyeTV for OSX
3. Install corekim/eyetv-export-scripts
4. Configure the "Export To Plex" applescript
5. Configure Plex with a "TV Shows" library
6. Install the RARflix Channel app on the Roku

Then whenever EyeTV completes a Recording from Air, it runs an applescript to automatically transcode the program using HandBrakeCLI into the Matroska file format, deletes the EyeTV program to free up disk space and signals the Plex media server to reindex the "TV Shows" library.

Plex then retrieves program artwork and series and episode information from the Internet and builds a custom menu entry to host and serve the Series and subsequent episodes from its content directory.

Once Plex and EyeTV are setup the manner in which the content is accessed is up to the end user. They can simply access it through a web browser and the media will play through an web app, or they can use a DLNA compatible tv or media app, or they can use the Roku streaming stick RARflix app to "discover" the local Plex media server and begin browsing content to play through the Channel app.

Installing Plex involves opening a browser from OSX here https://plex.tv/downloads choosing [Computer] and pressing download. Once it is downloaded, extract the app and drag and drop it into the Applications folder or move it there, then start the Plex Media Server by clicking on it. It will start a dock icon and place a control icon in the overhead tool bar that looks like an ">" Arrow. Either can be used to access the app controls, or a web browser on a local network computer can be pointed at http://<ip_address>:32400/web/index.html

Installing EyeTV is a bit more complex and depends on the broadcast capture device being used. I use a network connected broadcast receiver (SiliconDust HomeRunHD) so that I can position it next to an antenna and then connect a long ethernet cable back through switches to the EyeTV server. The EyeTV program is a one time purchase, commerical software  and requires an add-on yearly subscription to an electronic program guide such as TVGuide. There are hacks to use other regional or sometimes free program guide services, but in the US using TVGuide is the norm. Its also somewhat more reliable and constent a service.

Installing corekim/eyetv-export-scripts involves downloading them from the GitHub site https://github.com/corykim/eyetv-export-scripts It contains one script and an optional plist file. the script will need to be copied to the OSX /Library/Applications Support/EyeTV/Scripts directory then edited by opening it in the Applications/Utilities/Applescript Editor making a few changes as indicated in the README.md file and then compiling and saving it to "Export To Plex.scpt" it has to be saved as {File Format: Script}

The Plex forum has some self-help discussion on the script here https://forums.plex.tv/index.php/topic/105404-new-script-to-integrate-eyetv-and-plex/?hl=eyetv

I found when attempting to compile, it complained it needed the path to a utility called Turbo.264, and commented out that function. It also complained about Atomic Parsley, I commented that out. And it had a syntax error in one line of the logging function, commented that one line out. Then it compiled properly.

This script has a prerequesite of the HandBrakeCLI which is described in the README.md and can be downloaded from http://handbrake.fr/downloads2.php {For Mac OSX 10.6 to 10.10 Download (Intel 64 bit) } it needs to be copied to /usr/local/bin/HandBrakeCLI

I used a 2007 mac-mini core duo running Snow Leopard 10.6.8 for this demonstration



The example plist file can be used for setting most of the constants that might change without modifying the script file, and will be read on script startup if it exists in the same directory as the script file when it runs.

The README also says, suggests hard linking this configured script "Export To Plex.scpt" into the subdirectory TriggeredScripts, as "RecordingDone.scpt" this subdirectory is special to EyeTV and is searched when an event like a broadcast recording completes and executes any scripts with the appropriate name. If you use a plist, I did copy the plist file to the TriggeredScripts directory as "Export To Plex.plist" a hard link might be just as well.

Once this is done, a test is to shutdown EyeTV and restart it, if there is a .scpt file in the OSX /Library/Applications Support/EyeTV/Scripts directory a "New" icon will appear on the overhead EyeTV toolbar. Selecting a recorded program from the EyeTV list by touching it or clicking but not starting playback, and then clicking on this overhead EyeTV "new" icon will reveal an dropdown menu with the choice to run the script "Export To Plex" clicking on that will start a background HandBrakeCLI job to turn the file into a mkv file. It will take several hours and be substantially smaller than the original EyeTV version.

Configuring Plex to monitor and provide a "TV Show" Library was a bit unintuitive.


In the beginning the [Media Library] said [Mac] this is an option that can be changed from wheel icon in the Navigation panel on the Left [*V] > Settings > Friendly name

The [+] icon from that same top level Navigation panel starts a Popup Dialog called [+ Add Library]



Selecting the [TV Shows] icon begins an Interview Wizard for "Naming", "Folders" and "Advanced" which names the Library as it will appear in the Navigation panel, chooses the file system folder to monitor for new media for this library and designates the media Scanner and Agent for looking for information embedded in the media file (scanning) and what Agent to use to retrieve artwork, series and episode information from the Internet.

Plex will normally scan and update the library with new media it finds on a regular basis, but if the "Export To Plex" or "RecordingDone" scpt scripts are configured to "refresh" the Library "section" as described in the README.md file. Then the Library will be immediately updated whenever EyeTV completes a Recording and Archives it using the postscript to convert the program to matroska format.

Installing the Roku streaming stick and configuring it is optional, if the streaming stick has been setup and is on the same network. It can either access the Plex server as a DLNA device or through the RARflix Channel app. Setting up the Roku normally involves signing up for a free account and then browsing or searching channel apps to "add to" your associate Roku device. Searching for RARflix will return exactly one free channel app. Which can be bought without providing a credit card number for $0.00 you will be billed for $0.00 and receive an invoice for $0.00

The Channel app RARflix will immediately find the local Plex server and offer up its content for viewing.

Plex also makes a Channel app with a Trial and Yearly subscription price that is non-zero cost. Many people feel the options it offers (early access in some cases to new Plex apps) is worth the fee.

ISO format media is not generally accessible by design through Plex because replicating the DVD menu structure over a network connection through the many Plex apps is deemed not acceptable.

Rationale for "not supporting" disk image formats

Why are ISO, VIDEO_TS and other Disk Images Formats Not Supported


However if you would like to make Plex scan and offer it up anyway.

There is an alternative "unsupported" scanner and agent available from here

 Scanning Disk Image Formats