====================================================================== The Internet Communications Engine ====================================================================== Ice is a modern alternative to object middleware such as CORBA or COM/DCOM/COM+. It is easy to learn, yet provides a powerful network infrastructure for demanding technical applications. It features an object-oriented specification language, easy to use C++, Java, Python, PHP, C#, and Visual Basic mappings, a highly efficient protocol, asynchronous method invocation and dispatch, dynamic transport plug-ins, TCP/IP and UDP/IP support, SSL-based security, a firewall solution, and much more. Ice is available under the terms of the GNU General Public License (GPL) (see LICENSE file). Commercial licenses are available for customers who wish to use Ice with proprietary products. Please contact sales@zeroc.com for more information about licensing Ice. ====================================================================== About this distribution ====================================================================== This distribution is an RPM release of the Ice @ver@ runtime for Linux and includes executables for the Ice services, HTML documentation, Slice files, and the C++ runtime libraries. Additional Ice components are provided in separate RPM packages: - Run time libraries for Java, Python, PHP, and C# (Mono). These libraries enable you to execute Ice applications. - Development kits for C++, Java, Python, PHP, and C# (Mono). A development kit is required for building Ice applications using a supported language mapping. The development kits include examples that demonstrate various Ice features. These RPMs are available for download at the ZeroC web site at http://www.zeroc.com/download.html ====================================================================== Setting up your environment to use Ice ====================================================================== C++ --- No additional compiler or linker options are required for an RPM installation of the Ice for C++ development kit. Java ---- To use Ice for Java, you must add Ice.jar to your CLASSPATH, as shown in the following bash command: $ export CLASSPATH=/usr/lib/Ice-@ver@/Ice.jar:$CLASSPATH To use the Java5 version of Ice instead, modify your CLASSPATH as follows: $ export CLASSPATH=/usr/lib/Ice-@ver@/java5/Ice.jar:$CLASSPATH Note that the Freeze component of Ice for Java requires Berkeley DB. In order to use Freeze, you must add db.jar to your CLASSPATH. In addition, the JVM requires the directory containing the Berkeley DB libraries to be listed in java.library.path, therefore you must add this directory to your LD_LIBRARY_PATH. Assuming you are using the RPM installation of Berkeley DB, the bash command is shown below: $ export LD_LIBRARY_PATH=/usr/lib:$LD_LIBRARY_PATH On a x86_64 system with a 64-bit JVM, the 64-bit Berkeley DB libraries are installed in /usr/lib64, so use instead: $ export LD_LIBRARY_PATH=/usr/lib64:$LD_LIBRARY_PATH Python ------ To use Ice for Python, the PYTHONPATH environment variable must be updated so that the interpreter can load the Ice extension and supporting Python files: $ export PYTHONPATH=/usr/lib/Ice-@ver@/python:$PYTHONPATH On a x86_64 system, the python Ice extension is installed in /usr/lib64/Ice-@ver@/python, so use instead: $ export PYTHONPATH=/usr/lib64/Ice-@ver@/python:$PYTHONPATH C#/Mono ------- The RPM installation adds the C# runtime libraries to the global assembly cache (GAC), so that no changes to your environment are necessary to locate the assemblies. The instructions for running the demos assume that you have configured your kernel to automatically execute the Mono interpreter. To do this, run the following commands as root (replace /usr/bin/mono with the location of your mono interpreter): if [ ! -e /proc/sys/fs/binfmt_misc/register ]; then /sbin/modprobe binfmt_misc mount -t binfmt_misc none /proc/sys/fs/binfmt_misc fi if [ -e /proc/sys/fs/binfmt_misc/register ]; then echo ':CLR:M::MZ::/usr/bin/mono:' > /proc/sys/fs/binfmt_misc/register else echo "No binfmt_misc support" exit 1 fi If you don't want to do this you need to run the executable with mono. For example, $ mono server.exe PHP --- The Ice extension for PHP is loaded automatically when the interpreter loads the contents of the file /etc/php.d/ice.ini: extension=IcePHP.so You can modify this file to include additional configuration directives, such as those used by the Ice extension. At run time, the PHP interpreter requires the Ice shared libraries as well as the Slice preprocessor (icecpp). You can verify that the Ice extension is installed properly by examining the output of the "php -m" command, or by calling the phpinfo() function from a script. SELinux Notes: SELinux augments the traditional Unix permissions with a number of new features. In particular, SELinux can prevent the httpd daemon from opening network connections and reading files without the proper SELinux types. If you suspect that your IcePHP application does not work due to SELinux restrictions, we recommend that you first try with SELinux disabled. As root, run: # setenforce 0 to disable SELinux until the next reboot of your computer. If you want to run httpd with IcePHP and SELinux enabled, you must do the following: - Allow httpd to open network connections: # setsebool httpd_can_network_connect=1 (add the -P option to make this setting persistent across reboots) - Make sure any .ice file used by your PHP scripts can be read by httpd. The enclosing directory also needs to be accessible. For example: # chcon -R -t httpd_sys_content_t /opt/MyApp/slice See this FAQ for more information on SELinux: http://fedora.redhat.com/docs/selinux-faq/ ====================================================================== Using the IceGrid Administrative Console ====================================================================== A Java-based graphical tool for administering IceGrid applications is included in this distribution. The Java archive file is installed as /usr/lib/Ice-@ver@/IceGridGUI.jar With a suitable Java installation, you can execute the application using the following command: $ java -jar IceGridGUI.jar ====================================================================== Demos and documentation ====================================================================== Sample programs are provided in the Ice-@ver@-demos.tar.gz package, which can be downloaded from the ZeroC web site at http://www.zeroc.com/download.html Please refer to the README.DEMOS file included in that package for more information. See doc/README.html for information on the documentation included with this distribution. ====================================================================== Binary compatibility ====================================================================== Patch releases of Ice are binary compatible. For example, version ..1 is compatible with ..0, so you can run applications compiled with ..0 with the ..1 runtime without having to recompile. With the binary installers, simply uninstall the previous version of Ice and install the new one. Already deployed applications that were compiled against the ..0 runtime will automatically use the ..1 runtime. Note: Under Mono, binary compatibility currently does not work due to issues with Mono. Until this problem in Mono is fixed, you cannot run applications compiled with previous minor versions of Ice against a newer version of the Ice assemblies. For example, an application compiled with version ..0 of Ice cannot run with the ..1 Ice assemblies.