This is a new release of SmartFrog, the Java-based, LPGL-licensed distributed deployment framework developed by HP Laboratories. SmartFrog enables applications to be deployed across multiple machines, configuring different aspects of the system so that they are all consistently configured, and managing the life-cycle of the application as a whole. The project's home page is http://smartfrog.org/
The release artifacts are available at http://sourceforge.net/project/showfiles.php?group_id=87384&package_id=176308
This release is 3.12.026; built from revision 6168 of the SVN repository. This release has an extended language with the ability to tag attributes, and includes the following items:
- Core smartfrog daemon, including services to manage files, start and stop Java and native programs.
- Example components and applications.
- Ant support: ant tasks to deploy and terminate applications from a build.
- Ant components: the ability to execute ant tasks in a deployment.
- Anubis: a partition aware tuple-space that can be used to implement fault tolerant systems.
- Database: components to issue database commands, and deploy HSLDB and MySQL.
- JMX: the ability to configure and manage JMX components, and to manage SmartFrog components over JMX.
- Logging: integration with Apache commons-logging and Log4J
- Networking: email, FTP, SSH, DNS support.
- Quartz: scheduled operations using Quartz libraries.
- Scripting: support for BSF-hosted scripting languages
- Testing: Distributed JUnit and component testing with SFUnit.
- WWW: deployment of WAR and EAR files to application servers. deploy-by-copy is provided for all application servers that support, and a tomcat-specific component can communicate with Apache Tomcat. The Jetty component can configure and deploy individual servlets, eliminating much of the need for WAR files themselves.
- XML: XML support with XOM.
- XMPP: Presence and messaging over Jabber.
This release is available as:
- RPM files inside a .tar.gz file.
- a JAR installer.
- the original core smartfrog distribution as .zip and .tar.gz (deprecated)
The RPM installation is for RPM-based Linux systems. It comprises the following RPMs:
|smartfrog||The core SmartFrog distribution.|
|smartfrog-daemon||The shell scripts to add the smartfrog distribution to the path, and to run the daemon on start-up.|
|smartfrog-javadoc||javadocs for the project|
|smartfrog-ant||Ant task and build file execution|
|smartfrog-anubis||Distributed partition-aware tuple space|
|smartfrog-csvfiles||CSV file support|
|smartfrog-jmx||JMX integration though MX4J|
|smartfrog-junit||Junit 3.8.2 test execution|
|smartfrog-logging||Logging through Log4J and commons-logging|
|smartfrog-networking||SSH, SCP, FTP and email|
|smartfrog-www||Web support: Deployment and liveness pages|
|smartfrog-xunit||Distributed testing and reporting|
All the JAR files are also published to a repository that is compatible with Apache Maven and Ivy. Add http://smartfrog.sourceforge.net/repository to your repository list to pull SmartFrog artifacts into your Ivy- or Maven- based build.
There are also SmartFrog components to retrieve artifacts from such a repository (the Library components under /org/smartfrog/services/os/java/library.sf ), which can be used for dynamic download of SmartFrog and other artifacts.
Unless SmartFrog is configured with security, a running daemon will listen on its configured port for incoming deployment requests, and deploy the applications with the rights of the user running the daemon. When the smartfrog-daemon RPM is installed, that means that a process running as root will be listening on an open port for incoming deployment requests. Do not deploy SmartFrog this way on any untrusted network, not without turning security on and, ideally, recreating the RPMs with signed JAR files.
SmartFrog requires Java 1.5 and Ant 1.7 to build.
The distribution does not include a source tree adequate to build the entire system. Please follow the instructions at http://sourceforge.net/svn/?group_id=87384and check out smartfrog/trunk/core from our repository.
This release was built with revision 6168 of the repository, which is available under the SVN branch https://smartfrog.svn.sourceforge.net/svnroot/smartfrog/tags/release3.12.026
We strongly encourage anyone interested in building or extending smartfrog to get involved in the smartfrog developer mailing list, which can be found from the sourceforge project page http://sourceforge.net/projects/smartfrog/
Please file all bug reports at http://jira.smartfrog.org/
The SmartFrog Team
The main changes in this release are:-
- All shell scripts/batch files take a -p option that specifies the port to work with. This simplifies running SmartFrog on different ports, including multiple versions of SmartFrog simultaneously.
- There is a new component bundle, sf-csvfiles, in the smartfrog-csvfiles RPM. This can read in lines from a .csv file, be they created by a spreadsheet or another program. A column from a CSV file can be turned into a list attribute of a component, so enabling parts of a deployment to be spreadsheet driven. There is also a component in the sf-xml package which runs through a CSV file (or other source of tuples) and generates an XML file from it, XML that can then be transformed using XSL operations into other text formats.
- The LivenessPage and WaitForPage components in the sf-www package now support authenticated access to web pages; this enables the components to connect to the dyndns.org services to dynamically register hostnames. We provide templates to demonstrate this.
- More graceful handling of bad network states. Remember, SmartFrog uses Java RMI, a technology which does not like the hostname of the local host not resolving in the network stack. SmartFrog detects this and keeps going, but you may not be able to deploy all that you wish to.
- [SFOS-326] - sfPing shell script uses == instead of -eq
- [SFOS-397] - what does TestCompoundImpl do when it is the condition that terminates?
- [SFOS-450] - Implement error handling/reporting code for the VM logic
- [SFOS-608] - "ant install" task only copies dist/lib content but fails to copy ivy dependencies
- [SFOS-665] - Typo in jetty-core.sf when referencing SSLJettySocketConnectorImpl
- [SFOS-681] - Review and edit SshExecImpl to avoid a problem that surfaced in Ant's ssh
- [SFOS-686] - LivenessPageChecker/Java.net.URL doesnt use username+password
- [SFOS-688] - Unable to add sfHost attribute to ProcessCompound when the host networking is not properly configured.
- [SFOS-694] - test harness locking up in Jetty Tests
- [SFOS-697] - regression: Sf daemon longer works on my home machine due to networking changes
- [SFOS-699] - NPE in liveness page path concat
- [SFOS-706] - knownHosts are ignored in ssh components
- [SFOS-707] - NPE when starting components, but no stack trace appears
- [SFOS-713] - rpm -bb fails on CentOS
- [SFOS-723] - sfStart argument validation is broken.
- [SFOS-724] - sfTerminate argument validation broken
- [SFOS-734] - NPES get thrown in in org.smartfrog.sfcore.security.SFClassLoader during InitSecurity
- [SFOS-735] - EC2 tests failing on new VM
- [SFOS-542] - LivenessPage/WaitForPage needs to support optional user/password attributes
- [SFOS-669] - Upgrade to Jetty 6.1.7
- [SFOS-689] - Move SystemPropertiesImpl to non-introspected Java5 calls
- [SFOS-695] - Need a constructor for SmartFrogDeploymentException that takes a message, a throwable and a component
- [SFOS-696] - Factor out workflow/normal termination from a worker thread into its own thread class
- [SFOS-698] - Improve logging/diagnostics when a throwable is raised during component deploy/startup
- [SFOS-701] - have the liveness components determine the port number from the protocol
- [SFOS-702] - add target to common.xml to delete the published artifacts of a single project
- [SFOS-714] - Add commons-httpclient to the dependencies and distributables of sf-www
- [SFOS-373] - Add the connection port to sfStart so that it can be used without having to modify default.ini and contact daemons running in a non-default port.
- [SFOS-555] - add DynDNS client API
- [SFOS-691] - add regexp validation into passwordChecker
- [SFOS-693] - Add a way to read in CSV files
- [SFOS-700] - New switch to log classpath during daemon boot
- [SFOS-709] - Improve Dumper configuration: add sf configuration and default.ini configuration for "keys to be removed" and "timeout"
- [SFOS-710] - Update shell scripts to take new "-p" parameter.
- [SFOS-725] - Add component to turn CSV data into XML as part of a workflow
- [SFOS-726] - extend list utils to support arbitrary width and ragged string tuples
- [SFOS-687] - Upgrade JavaCC from v3.2 to v4.0
- [SFOS-718] - review SFAutoWrapper class and clean up
- [SFOS-719] - review system properties tasks and add examples to the wiki
- [SFOS-727] - review database components and move to workflow thread
- [SFOS-731] - Have a look at the Avalanche Code, see what the IDE flags up
- [SFOS-733] - move VMWare to latest (3.0.2) release of JNA
- [SFOS-625] - Add redirect (http 3XX support) to restlet component
- [SFOS-630] - S3 PUT response isnt handled by restlet
- [SFOS-703] - Need way to put AWS permission headers in a PUT