SlideShare una empresa de Scribd logo
1 de 326
Descargar para leer sin conexión
USER GUIDE
webMathematica™
Wolfram
For use with Wolfram webMathematica™
3.0 and higher.
For the latest updates and corrections to this manual:
visit reference.wolfram.com
For information on additional copies of this documentation:
visit the Customer Service website at www.wolfram.com/services/customerservice
or email Customer Service at info@wolfram.com
Comments on this manual are welcomed at:
comments@wolfram.com
Printed in the United States of America.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
©2009 Wolfram Research, Inc.
All rights reserved. No part of this document may be reproduced or transmitted, in any form or by any means,
electronic, mechanical, photocopying, recording, or otherwise, without the prior written permission of the copyright
holder.
Wolfram Research is the holder of the copyright to the various Wolfram Mathematica software systems ("Software")
described in this document, including, without limitation, such aspects of the system as its code, structure, sequence,
organization, "look and feel", programming language, and compilation of command names. Use of the Software
unless pursuant to the terms of a license granted by Wolfram Research or as otherwise authorized
by law is an infringement of the copyright.
Wolfram Research, Inc. and Wolfram Media, Inc. ("Wolfram") make no representations, express,
statutory, or implied, with respect to the Software (or any aspect thereof), including, without limitation,
any implied warranties of merchantability, interoperability, or fitness for a particular purpose, all of which
are expressly disclaimed. Wolfram does not warrant that the functions of the Software will meet your
requirements or that the operation of the Software will be uninterrupted or error free. As such, Wolfram
does not recommend the use of the software described in this document for applications in which errors
or omissions could threaten life, injury or significant loss.
Mathematica and MathLink are registered trademarks of Wolfram Research, Inc. J/Link, MathLM, .NET/Link, Wolfram
Workbench, , and webMathematica are trademarks of Wolfram Research, Inc. Windows is a registered
trademark of Microsoft Corporation in the United States and other countries. Macintosh is a registered trademark of
Apple Computer, Inc. All other trademarks used herein are the property of their respective owners. Mathematica is
not associated with Mathematica Policy Research, Inc.
1550362 0909.JP
gridMathematica
webMathematica Users Guide
Introduction to webMathematica
What Is webMathematica? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Why Use Mathematica in a Website? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Computation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Interactive Programming Language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Connectivity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
The Mathematica Front End . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Mathematical Typesetting and MathML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Why a Web Interface? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Ease of Use . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Server-Based Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Web Technologies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Areas of Use for webMathematica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Web Computation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Education . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Publishing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Research . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Hobbyist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
webMathematica Technology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
New Features of webMathematica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
webMathematica 3.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
webMathematica 2.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
webMathematica 2.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
webMathematica 2.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
webMathematica 2.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Installation
Setting Up a Servlet Container . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Setting Up Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Unix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Mac OS X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Setting Up Tomcat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Unix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Mac OS X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Installing and Configuring Mathematica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Installing the webMathematica Web Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Tomcat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Other Servlet Engines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Configuring for the X Window System (Unix only) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Configuring Xvnc and webMathematica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Install Xvnc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Launch Xvnc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Test Xvnc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Configure webMathematica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Other X Related Issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Connecting to the X Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Xvfb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Manual Font Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Upgrading from webMathematica 2.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Install Mathematica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Install the webMathematica Web Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Configure the New Layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
web.xml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
MSPConfiguration.xml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Security Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Move Content to the New Layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Finalize the Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Optional Further Configuring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
MSP Mathematica Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Launching webMathematica Automatically . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Unix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Web Server Connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Apache and Tomcat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Microsoft Servers and Tomcat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Basic Examples
Hello.jsp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Working with Variables: Variables.jsp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
MSP Functions: Expand.jsp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Graphics: Plot.jsp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Typeset Images: Integrate.jsp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Live 3D Plotting: Plot3DLive.jsp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Getting Messages: Messages.jsp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Returning General Content: Content.jsp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Interactive Web: SliderPlot.jsp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Applets: TextApplet.jsp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
JavaScript: PlotScript.jsp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Setting Variables: SetBasic.jsp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Getting Variables: GetBasic.jsp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Developing Your Own Pages
Wolfram Workbench . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Tips and Tricks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Coding in Pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Browse Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Design Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Banners and Buttons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Minimal Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Minimal File Layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Applications
XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Introduction to XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
XML Compliance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Mathematica Support for XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
webMathematica XML Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
MathML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Embedding MathML in Web Documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
XHTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
XHTML and MathML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Rendering XHTML and MathML Documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
Generating MathML from webMathematica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
MathML Integrate Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
SVG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Plotting with SVG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
SVG Animations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
HTML Formatting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
The HTML Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
HTMLTableForm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
HTMLFormat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
HTMLSelect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
HTMLCheckBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
webMathematica Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Table Formatting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Select Formatting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
Interactive Web Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
Example: SliderPlot.jsp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Formatting and Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
Underlying Technology and Limitations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Using Java APIs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Server APIs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Other Java APIs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
Data Loading and Computation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
File I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
HTTP Upload . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Database Connectivity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Web Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
Web Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
Data Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
Loading Data: Load.jsp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
Uploading Data: Upload.jsp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
Session Storage of Data: Session.jsp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Database Connections: Database.jsp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
Mathematica Packages and Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Loading Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Writing Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
Installing Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
webMathematica Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
$BaseDirectory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
$UserBaseDirectory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
The Script Directory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
$TopDirectory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
Absolute Filename . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
Extended Page Language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
Expression Language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
JSP Standard Tags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
choose/when/otherwise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
Queuing of Long Calculations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Interacting with the Queue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
Lifetime of a Queued Request . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
Organizing and Configuring a Queued Pool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
Alternative Server Technologies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
JavaServer Pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
PDF Documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
Generating a Mathematica Notebook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
Converting to PDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
Returning PDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
Creating PDF Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
Returning General Content . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
Direct Return . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
MSPReturn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
MSPURLStore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
AJAX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Time Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
HTML Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
Web Services and XML Exchange . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
Web Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
Informal Web Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
AJAX Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
Mathematica SOAP Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
webMathematica SOAP Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
Echo Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
Plot Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
Excel Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
Type Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
Simple Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
Date and Time Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
Binary Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
SchemaExpr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
SchemaMathML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
Errors and Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
Advanced Topics
Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
Input Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
Interpretation of Input Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
Interpreted versus Noninterpreted Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
MSPBlock versus MSPToExpression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
Page Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
Session Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
Server Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
Mathematica Program Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
MSPBlock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
MSPToExpression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
Avoid ToExpression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
Security Validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
The Validation Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
Configuring a Security Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
ToExpression Validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
Security and Kernel Pools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
Access Restrictions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
Evaluation Formatting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
Automatic Formatting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
MSPFormat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
String Formatting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
Graphics and Image Formatting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
Suppressing Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
Multiple Calculations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
Multiple Kernel Pools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
Multiple Web Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
Mapping URLs onto JSPs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
Handling Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
Catching Mathematica Error Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
Adding an HTTP Error Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
Displaying Mathematics and Graphics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
MSP Functions Returning Images . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
LiveGraphics3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
Including Static Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
Troubleshooting
Initial Checks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
Check the Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
Check the URL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
Check the Initial Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
Check the Kernel Monitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
Check the Logging System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
Check the Console Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
Check Mathematica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
Specific Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
Problems Running the Kernel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
Problems Running the Front End . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
Problems Testing Xvnc (Unix only) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
Problems Testing Xvfb (Unix only) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
Images Do Not Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
Images Do Not Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
Mathematica Packages and Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
Kernel Initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
Vertical Alignment in Formatting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
Timeout Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
UnsatisfiedLinkError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
Cannot Load JLink` . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
NoClassDefFoundError: TryCatchFinally . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
NoClassDefFoundError: JLink Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
NoSuchMethodError: KernelData . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
Debugging webMathematica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
Not Using Wolfram Workbench . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
Using Wolfram Workbench . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
Logging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
webMathematica Logging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
Server Logging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
The Kernel Monitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
Reporting Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
Configuration
CheckToExpression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
CollectStreams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
FileUploadSizeLimit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
FrontEndExecutable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
FrontEndLaunchFlags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
JlinkNativeLibraryDirectory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
KeepFrontEndAlive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
KernelAcquireCode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
KernelAcquireLimit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
KernelBaseMemoryLimit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
KernelConnectLimit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
KernelDestroyCode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
KernelExecutable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
KernelInitializeCode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
KernelLaunchFlags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
KernelNumber . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
KernelPeakMemoryLimit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
KernelPool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
KernelPool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
KernelPoolName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
KernelReleaseCode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
KernelTimeLimit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
SecurityConfigurationFile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
URLPattern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
Functions
HTMLCheckbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
HTMLFormat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
HTMLSelect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
HTMLTableForm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
MSPBlock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
MSPException . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
MSPFormat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
MSPGetMessages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
MSPGetPrintOutput . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
MSPGetUploadFile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
MSPGetUploadFileList . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
MSPLive3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
MSPManipulate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
MSPManipulateHeader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
MSPPageDirectory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
MSPPageOptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
MSPReturn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
MSPRootDirectory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
MSPSessionVariable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
MSPSetDefault . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
MSPShow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
MSPToExpression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
MSPURLStore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
MSPValue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
MSPValueQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
Guides
Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
Formatting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
webMathematica Tags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
Processing Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
Web Interaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
webMathematica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
Tags
evaluate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
evaluateQueued . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
get . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
Appendix
Processing a JSP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
Mathematica Initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
webMathematica Tags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
Request Initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
evaluate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
Request Termination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
get . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
evaluateQueued . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
Mathematica Web Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
Processing Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
Formatting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
Web Interaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
Site Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
MSPConfiguration.xml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
Logging System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
Security Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
X Server Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
LiveGraphics3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
Dynamic HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
Server Technology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
Client Technology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
Mathematica Technology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
Mathematica Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
Tomcat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
Servers JSPs and Servlets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
Web Browser Technologies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
XML, MathML, and SVG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
PDF Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
The X Window System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
Logging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
Introduction to webMathematica
This document provides a guide to the installation and operation of webMathematica and the
development of a webMathematica site.
This introduction considers the reasons for using Mathematica in a website, examines a few
areas in which you might use webMathematica, briefly discusses the underlying technology, and
outlines the requirements for running webMathematica.
What Is webMathematica?
webMathematica adds interactive calculations and visualization to a website by integrating
Mathematica with the latest web server technology. The diagram below shows a view of a
webMathematica site, http://library.wolfram.com/explorations/webUnrisk/index.html.
This site gives a web browser interface to financial calculations and visualizations that are
driven by Mathematica. In this site users are taken through a sequence of web pages in which
they select different input parameters and submit data to build up a sequence of results.
Why Use Mathematica in a Website?
There are various important features that Mathematica can offer to a website, including computa-
tion, an interactive programming language, connectivity, the Mathematica front end, and
enhanced support for MathML.
Computation
Mathematica contains a large collection of functions for computing in many areas, such as
numerics, symbolics, and graphics. webMathematica makes all of this functionality available
over the web.
Many web technologies, so powerful in many areas, are not well suited to scientific computa-
tion; it is simply not their main focus. Mathematica, on the other hand, is very suitable for
scientific computation and can provide this on the web.
Interactive Programming Language
Mathematica contains a high-level, interactive, functional programming language. It lends itself
to rapid prototyping but can scale up to large intensive computations. These are also advan-
tages for web content generation, since large sites can be developed with less programmer
effort.
Connectivity
Mathematica connects readily to external services, which may be provided by languages such
as Java, C, Fortran, or Perl. These services can provide a data source for computations and also
take the results from Mathematica. It is particularly easy to connect to Java via J/Link, a toolkit
for integrating Java into Mathematica. More information on J/Link can be found at
http://www.wolfram.com/solutions/mathlink/jlink.
2 webMathematica User Guide
The Mathematica Front End
The Mathematica notebook user interface (front end) has long provided the premium mecha-
nism for working with the Mathematica kernel. Now, webMathematica provides an alternative
interface via the web. Even in a web environment, the front end is extremely useful. It is used
to typeset mathematics and render two- and three-dimensional graphical objects into images.
In addition, the front end can generate notebook documents on the server to send to the client.
Mathematical Typesetting and MathML
Mathematica is a premium system for interactive mathematical typesetting. It is also a powerful
system for working with MathML, which is designed to allow the use and reuse of mathematical
and scientific content on the web and by other applications. These features are a valuable
component of webMathematica, which works well with the increasing number of tools that are
available for MathML.
Why a Web Interface?
Some of the benefits that a web interface brings to Mathematica include ease of use and deliv-
ery, as well as the large number of web development professionals and the many web
technologies.
Ease of Use
To use a webMathematica site, all you need is a web browser. User interfaces can use standard
web GUI elements, such as text fields, checkboxes, and drop-down lists. This reduces training
time because users no longer have to learn different software applications. In many cases, no
Mathematica experience is required.
webMathematica User Guide 3
Server-Based Configuration
There is no software to buy, install, or maintain in order to use webMathematica sites. All end-
users need is a web browser and, for advanced features like interactive 3D graphics, a Java
Runtime Environment. This leads to significant savings over buying and maintaining user soft-
ware and also ensures that every end-user always has the most recent version. An additional
advantage is that webMathematica-enhanced websites can be accessed from many different
types of computers.
Web Technologies
There are many people who are experts in working with servers and developing dynamic web-
sites. They can choose from the many web technologies and tools to develop Mathematica-
related sites. Thus, development is easier and the applications they build are more powerful.
Areas of Use for webMathematica
There are several areas of use for webMathematica. Some of these include web computation,
education, publishing, research, and hobbyist calculations.
Web Computation
A major use of webMathematica is to build online tools for computation and visualization. An
example is webUnrisk, http://library.wolfram.com/explorations/webUnrisk/index.html; some
examples of webUnrisk are shown below.
4 webMathematica User Guide
Education
Mathematica is widely used in many areas of education. These applications can be extended to
web-based education tools with webMathematica. The Integrator, http://integrals.wolfram.com,
is a Wolfram Research-developed website that solves integration problems. Another use of
webMathematica in education is Calc101, http://www.calc101.com, which mixes free and pay-
per-use calculators that lead precollege and college students through integration and differentia-
tion problems.
Publishing
Many publishers are developing web-based supplements to textbooks, manuals, and journals.
webMathematica provides a suitable technology to support these efforts in technical subjects.
An example web-based supplement, built with webMathematica, is available at
http://library.wolfram.com/explorations/explorer/index.html, as shown in the following.
webMathematica User Guide 5
Research
Researchers all over the world use Mathematica to investigate their fields of interest and
develop techniques and algorithms for solving problems. All the Mathematica work they develop
can now be delivered with live interactive websites, vastly increasing the number of people who
can use and learn from their results. A typical website that plots surfaces of constant curvature
is http://library.wolfram.com/webMathematica/Mathematics/ConstantCurvature.jsp.
Hobbyist
webMathematica allows individual users to showcase their personal interests with web-based
interactive calculations and visualizations. AnalyticCycling.com, http://www.analyticcycling.com,
provides a recreational website that takes advantage of the web Mathematica engine.
Designed for technically oriented cyclists, AnalyticCycling.com offers web-based calculators that
take a no-compromise, textbook approach to computing cycling performance.
6 webMathematica User Guide
webMathematica Technology
webMathematica is based on two standard Java technologies: Java Servlet and JavaServer
Pages (JSPs). Servlets are special Java programs that run in a Java-enabled web server, which
is typically called a "servlet container" (or sometimes a "servlet engine"). There are many
different types of servlet containers that will run on many different operating systems and
architectures. They can also be integrated into other web servers, such as the Apache web
server.
webMathematica allows a site to deliver HTML pages that are enhanced by the addition of
Mathematica commands. When a request is made for one of these pages, the Mathematica
commands are evaluated and the computed result is placed in the page. This is done with the
standard Java templating mechanism, JavaServer Pages, making use of a special tags; exam-
ples of these are given in a later section.
webMathematica technology uses the request/response standard followed by web servers.
Input can come from HTML forms, applets, JavaScript, and web-enabled applications. It is also
possible to send data files to a webMathematica server for processing. Output can be many
different formats such as HTML, images, Mathematica notebooks, MathML, SVG, XML,
PostScript, and PDF. This user guide includes examples of working with all these different
technologies.
webMathematica provides a large library of Mathematica commands to handle the many possi-
ble ways of working with Mathematica computations. An important part of webMathematica is
the kernel manager that calls Mathematica in a robust, efficient, and secure manner. The man-
ager maintains a pool of one or more Mathematica kernels and, in this way, can process more
than one request at a time. An overview of the workings of a webMathematica site is shown
here.
1. Browser sends request to webMathematica server.
webMathematica User Guide 7
webMathematica server acquires Mathematica kernel from the pool.
3. Mathematica kernel is initialized with input parameters, carries out calculations, and
returns result to server.
4. webMathematica server returns Mathematica kernel to the pool.
5. webMathematica server returns result to browser.
8 webMathematica User Guide
2.
Requirements
The aim of webMathematica and MSP technology is to reduce the amount of extra knowledge
required for developing a site to a minimum. In practice, this means knowing something about
HTML and Mathematica. You do not need any special knowledge of Java, nor do you need to
know anything about JavaScript. webMathematica also aims to automate the management of
the site to make running, maintenance, and configuration as convenient as possible. Administra-
tors of webMathematica sites do not need any knowledge of Java beyond its installation.
The minimum technical components for webMathematica are:
1. A servlet container supporting both the Servlet Specification 2.4 (or higher) and JSP
Specification 2.0 (or higher)
2. A JDK 1.2 (or higher); Java 2 Version 1.4 (or higher) is recommended
There are many different combinations of hardware and operating systems that support these
components. Most systems that run Mathematica will support webMathematica. At present
Intel/Windows, Intel/Linux, Mac OS X, and Sun/Solaris are fully supported,
http://www.wolfram.com/products/mathematica/platforms/. Setting up the servlet container is
discussed in a later section.
New Features of webMathematica
webMathematica 3.0
Interactive Tools
webMathematica 3.0 replicates the popular interactive Manipulate command for web pages.
You can create web pages that contain various GUI features such as sliders, checkboxes, and
popup menus, which control a calculation. All of this is done with the same concise syntax
provided by Manipulate.
webMathematica User Guide 9
Expression Language and Custom Tags
webMathematica 3.0 comes with support for a more concise way to call to Mathematica from
the web page. It also contains a library with a number of useful tags; these tags provide a
number of valuable tools, such as redirecting flow as the web page is generated.
Queueing System
webMathematica 3.0 allows long running or asynchronous computation jobs to be executed by
a new queueing system.
Support for Wolfram Workbench
Wolfram Workbench provides a significant number of features that help to accelerate the devel-
opment of webMathematica content. webMathematica 3.0 integrates with Wolfram Workbench
so that Mathematica code can be debugged as it runs in the server.
Web Services
webMathematica 3.0 enables you to write REST and SOAP web services that use Mathematica.
New Logging System
A new, highly configurable logging system helps to track different types of errors and to identify
problems so that they can be resolved easily.
Improved Kernel Monitor
The Kernel Monitor has been significantly improved. It has new code for monitoring memory
usage, running time, concurrent requests, and Java objects; this helps to improve the reliability
of the server. It allows starting and stopping of individual kernel pools and canceling individual
computations. Queued jobs are monitored for progress and errors.
Improved Kernel Interaction
webMathematica 3.0 has improved the way that it interacts with the Mathematica kernel. It
launches kernels as soon as the server starts and launches all kernels in parallel; this helps to
improve the startup time for the server. It also has a number of new configuration tools, which
limit the use of time and memory by the kernel; this helps to improve the reliability of the
server. Kernels are automatically restarted in the background, so service remains uninterrupted.
10 webMathematica User Guide
Incompatibilities
This section lists any changes in webMathematica 3.0 that work differently from previous
versions.
Classic webMathematica Technology Dropped
Support for the classic webMathematica technology has been dropped. This technology has
been deprecated since webMathematica 1.0.
Configuration
A new configuration system based on a single XML file, MSPConfiguration.xml, is now sup-
ported. The name of the security configuration file is now called SecurityConfiguration.m.
webMathematica 2.3
The main new feature of webMathematica 2.3 is support for Mathematica 5.2. There are also a
number of internal improvements.
webMathematica 2.2
Support for Mathematica 5.1
webMathematica 2.2 comes with Mathematica 5.1. Mathematica 5.1 contains many important
new features relevant to web operations, the most important being optimized binary I/O, graph
and array plotting, and comprehensive string manipulation, matching, and searching
capabilities.
Database Connectivity
DatabaseLink provides Mathematica with an industrial-strength, ready-made solution for inte-
grating Mathematica with any standard SQL database. Integrated with Mathematica 5.1, it
provides a convenient bridge between SQL databases and webMathematica. One particularly
useful feature for webMathematica is that DatabaseLink contains the HSQL Database Engine
(HSQLDB), a lightweight database. This means that if you do not already have a database or
want to experiment with using one, you do not have to set one up; instead you can use
HSQLDB.
webMathematica User Guide 11
Client Web Services
The Mathematica Web Services Package allows Mathematica to call web services across the
internet. Bundled with Mathematica 5.1, it provides a convenient way for webMathematica to
use a web service. This is an important way to extend the functionality of a webMathematica
website.
webMathematica 2.1
The main new feature of webMathematica 2.1 is support for Mathematica 5.0. There are also a
number of internal improvements and new examples.
webMathematica 2.0
webMathematica 2.0 offered a number of new features and improvements. These are listed in
this section.
Support for Mathematica 4.2
webMathematica 2.0 comes with Mathematica 4.2. Mathematica 4.2 has many features that are
very relevant to web operations, the most important being the XML support. There are many
examples in webMathematica 2.0 that use XML features and XML applications such as MathML
and SVG.
Simplified Installation
webMathematica 2.0 has a simplified installation process that only requires the installation of
the webMathematica web application. There is a minimum of extra configuration that is
required.
Extended Documentation and Examples
The documentation for webMathematica is now shipped in HTML format and accessible from the
webMathematica front page. In addition many new examples have been added that demon-
strate the new features.
12 webMathematica User Guide
New Templating Mechanism Based on JSP Custom Tags
A new HTML templating mechanism based on JSP custom tags has been added. This is now the
preferred mechanism for using webMathematica. The mechanism is easier to understand, it
allows the use of other JSP custom tag libraries, and it facilitates the integration of webMathe-
matica into other server applications.
MathML, SVG, and XML Support
Support for the XML applications, MathML and SVG, is built into webMathematica 2.0. In addi-
tion it can make use of the new XML processing tools that are available in Mathematica 4.2.
Support for Catching Message and Print Output
New functions are provided for catching the output of any Mathematica Message or Print state-
ments. This can be useful for debugging or developing material.
Support for HTTP File Upload
New functions are provided to support HTTP file upload. This is an important way to submit
information to a webMathematica web server.
Support for HTTP Session Variables
New functions are provided for saving material in an HTTP session stored in the server. This can
be useful for saving results from one computation to another.
HTML Formatting Functions
New functions are provided for formatting results into HTML.
Incompatibilities
This section lists any changes in webMathematica 2.0 that work differently from 1.0.
Location of Security Configuration File
The mechanism for locating the security configuration file has changed from webMathematica
1.0. Now the security configuration file is named in the pool configuration file and is located in a
central configuration directory in webMathematica/WEB-INF/conf. Previously the configuration
file could be loaded from anywhere on the Mathematica path.
webMathematica User Guide 13
This change was made because loading the security configuration from a single central location
is more secure. Since the default security system of webMathematica is very conservative, any
sites that do not move their security files will run with a higher level of security than is
expected. Security is discussed in a later section.
Location of MSP.conf
The default location MSP.conf has been moved into a central configuration directory in
webMathematica/WEB-INF/conf. This leads to a great simplification in the setup of your server
because it will look automatically in this location.
14 webMathematica User Guide
Installation
These installation instructions focus on setting up a servlet container and installing webMathe-
matica. As explained previously, webMathematica is based on a standard Java technology called
servlets; support for servlets is typically provided by a program called a servlet container. You
must set up the servlet container before adding webMathematica.
Installation can take the following steps:
1. Set up a servlet container.
2. Set up Mathematica using the CD-ROM from your distribution or from your download.
3. Install the webMathematica web application into your servlet container using the webMath-
ematica Tools CD-ROM from your distribution or from your download.
4. For Unix, you may need to set up an X server.
5. Finally, you should test your webMathematica site.
More information on installation of webMathematica can be obtained from Wolfram Research at
http://www.wolfram.com/products/webmathematica/install.
Setting Up a Servlet Container
Before you start to install webMathematica, you need an installation of Java and a servlet
container. If you already have these components, you may skip this section.
There are many different servlet containers, but one that is particularly convenient is Tomcat,
which can be obtained from http://jakarta.apache.org. Since Tomcat is a common way to run
webMathematica, there is information on installing and setting it up on Unix, Windows, and Mac
OS X.
webMathematica has been tested with Tomcat as well as other containers listed at
http://www.wolfram.com/products/webmathematica/technology/. If you have a particular
interest or experience in running webMathematica with other containers, please contact
Wolfram Research. However, if you do not have expertise with these other containers, using
Apache Tomcat is recommended.
When your servlet container is functioning correctly, as demonstrated by running its sample
servlets, you are ready to install webMathematica. If your servlet container does not work, then
webMathematica cannot work. The remaining steps in this section show you how to set up Java
and Tomcat. If you are not using Tomcat, you should skip this section and study the documenta-
tion for your servlet container.
Setting Up Java
It is recommended that you use a modern version of Java, such as Java SE 6. For Linux, Linux
x64, Solaris SPARC, Solaris x64, Solaris x86, Windows, and Windows x64, this is available from
the Sun Java site at http://java.sun.com/javase/downloads/index.jsp. The Sun Java site pro-
vides detailed installation instructions for the different platforms. These are all relatively simple;
typically, you download and execute an installer. If you are using Java SE 5 or higher, you can
use either a JRE or JDK to run webMathematica. If you are using an older version of Java, you
need the JDK. For Mac OS X, J2SE 5.0 is already installed. For other platforms, modern versions
of Java are available from the appropriate vendors; a list of useful links is maintained in the
Appendix: Java.
You will also need to set the JAVA_HOME environment variable. This is described in the next
sections for Unix and Windows.
Unix
The JAVA_HOME environment variable needs to be set for the environment in which Tomcat
runs. An example of this, suitable for inclusion in .bashrc (this is the initialization file for the
bash shell), is shown below.
JAVA_HOME=/usr/local/jdk1.6.0_14
export JAVA_HOME
For other shells, you should follow their standards for setting environment variables.
Windows
It is less important to set the JAVA_HOME variable for Windows because the Tomcat installer will
find your installation of Java. However, it is still recommended.
16 webMathematica User Guide
If you go to the Control Panel and open the System icon, you will see the System Properties
window. From this, select the Advanced tab and then the Environment Variables button.
Enter JAVA_HOME as a system variable, setting it to the top-level directory containing your JDK.
For example, if your JDK is installed in C:Program FilesJavajdk1.6.0_14, this is the
setting for JAVA_HOME.
Mac OS X
Mac OS X 10.5 ships with J2SE 5.0 and Java SE 6. Mac OS X 10.4 ships with J2SE 5.0. You may
find that an updated version can be obtained via the software update mechanism (see also
http://www.apple.com/java/). If you update your Java, you can ensure that you are always
using the most recent version of the JDK by setting up the JAVA_HOME environment variable
properly; this is shown below.
JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Home
export JAVA_HOME
The default login shell for Mac OS X 10.5 is bash; hence, the above command needs to be
placed in the appropriate shell initialization file, for example, .bashrc.
Setting Up Tomcat
This section describes setting up Tomcat on Unix, Windows, and Mac OS X. The main website
for Tomcat is http://jakarta.apache.org; a list of useful links is maintained in Appendix: Tomcat.
Unix
Before you run Tomcat, you should first make sure you have set up Java on your machine; this
was described in the previous section.
Download information for current versions of Tomcat is given at http://www.wolfram.com/prod-
ucts/webmathematica/resources/?tab=Updates. A variety of archive formats are available; one
of these should be unpacked in some central location, for example /usr/local. You may also
wish to change the name of the top-level directory. The actual location of Tomcat and the name
of the top-level directory are entirely up to you. Sample shell instructions for these steps are
shown below (note that tar xvfz archive will give you more information on what files are
being extracted). Other versions of Tomcat are available from the Apache website,
http://jakarta.apache.org.
webMathematica User Guide 17
[server1]$ cd /usr/local
[server1]$ tar xfz jakarta-tomcat-5.5.27.tar.gz
[server1]$ mv jakarta-tomcat-5.5.27 tomcat
On some platforms, such as Solaris, the default tar command does not work to unpack
the Tomcat archive as shown above. You need to obtain the GNU tar utility from
http://www.gnu.org/directory/GNU/tar.html in order to use the options shown.
It is often useful to create a low privilege account, such as tomcat, to run your servlet con-
tainer. It is probably helpful if this account has a home directory so that your X server and
Mathematica can store preferences information. If you create such an account, you may need
to change ownership of the Tomcat layout so it can be run by this account.
[server1]$ chown -R tomcat tomcat
The main top-level directory of Tomcat contains some important directories, including:
tomcat
bin
conf
logs
webapps
The bin directory contains commands for running Tomcat; the conf directory contains site
configuration files; the logs directory contains various log files; the webapps directory is where
you will install webMathematica. You should be able to launch Tomcat immediately from the
bin directory, making sure to be the tomcat user.
[server1]$ su tomcat
[server1]$ cd tomcat/bin
[server1]$ ./startup.sh
At this point, you should be able to connect to Tomcat via a URL such as http://localhost:8080.
If this does not return the Tomcat front page, then something is wrong with your setup. If you
look at the log files, it may help you track down your problem. Make sure that you have set
your JAVA_HOME variable as described in the installing Java for Unix section.
The bin directory also contains a script, shutdown.sh, used for shutting down Tomcat.
Information on launching Tomcat automatically on Unix is given in a later section.
18 webMathematica User Guide
Windows
Before you run Tomcat, you should first make sure you have set up Java on your machine; this
was described in the previous section.
Download information for current versions of Tomcat is given at http://www.wolfram.com/
products/webmathematica/resources/?tab=Updates. A convenient way to install Tomcat is to
download the self-installing executable. You should launch the installer and follow the instruc-
tions it provides. If you choose not to use the self-installing executable, then unpack the binary
distribution into a convenient location. Other versions of Tomcat are available from the Apache
website, http://jakarta.apache.org.
After installation is complete, you may wish to inspect the main top-level directory of Tomcat,
which contains some important directories, including:
Tomcat 5.5
bin
conf
logs
webapps
The bin directory contains commands for running Tomcat; the conf directory contains site
configuration files; the logs directory contains various log files; the webapps directory is where
you will install webMathematica.
The installer adds a Start Menu Group from which you can run Tomcat. You should test it via a
URL such as http://localhost:8080. If Tomcat does not run correctly, you should open a com-
mand prompt window, change directories (”cd”) to the bin directory (in the main top-level
directory of Tomcat) and try running the tomcat5.exe executable file (this can also be accom-
plished by double-clicking on the file via the Windows Explorer). Previous versions of Tomcat
used a startup.bat batch file. Starting and stopping Tomcat from the Start Menu is very
convenient (this is also a new feature of Tomcat 4.1), but for running Tomcat as a production
server under Windows you may wish to run it as a Windows Service. This is described in the
section on launching Tomcat automatically on Windows.
Mac OS X
Of course, before you run Tomcat, you should first make sure you have set up Java on your
machine as described in the previous section.
webMathematica User Guide 19
It is often useful to create a low privilege account, such as tomcat, to run your servlet con-
tainer. You can accomplish this via the System Preferences panel. If you create such an
account, you may need to change ownership of the Tomcat layout so it can be run by this
account.
[server1]$ sudo chown -R tomcat tomcat
The main top-level directory of Tomcat contains some important directories, including:
tomcat
bin
conf
logs
webapps
The bin directory contains commands for running Tomcat; the conf directory contains site
configuration files; the logs directory contains various log files; the webapps directory is where
you will install webMathematica. You should be able to launch Tomcat immediately from the
bin directory, making sure to be the tomcat user.
[server1]$ su Tomcat
[server1]$ cd Tomcat/bin
[server1]$ ./startup.sh
At this point, you should be able to connect to Tomcat via a URL such as http://localhost:8080.
If this does not return the Tomcat front page, then something is wrong with your setup. If you
look at the log files, it may help you track down your problem. Make sure that you have set
your JAVA_HOME variable as described in the installing Java for Mac OS X section.
The bin directory also contains a script, shutdown.sh, used for shutting down Tomcat.
Please also note that for webMathematica to fully function, you need to log on via the Mac OS X
console. This is necessary since the Mathematica front end makes use of the Mac OS X window-
ing environment.
Download information for current versions of Tomcat is given at http://www.wolfram.com/
products/webmathematica/resources/?tab=Updates. A variety of archive formats are available;
one of these should be unpacked in some central location, for example, /Library. You may
also wish to change the name of the top-level Tomcat directory. The actual location of Tomcat
and the name of the top-level directory are entirely up to you. /Library is useful because it
can be viewed via the Finder. Other versions of Tomcat are available from the Apache website,
http://jakarta.apache.org.
Note that the default OS X tar command does not work to unpack the Tomcat archive as
shown below. You would need to use the GNU tar utility (gnutar), which normally resides in
20 webMathematica User Guide
Note that the default OS X tar command does not work to unpack the Tomcat archive as
shown below. You would need to use the GNU tar utility (gnutar), which normally resides in
/usr/bin/, to use the options shown. You could also use Stuffit Expander (Version 7.0.1 and
later), which uncompresses *.tar.gz archives.
Sample shell instructions for these steps are shown below (note that tar xvfz archive will give
you more information on what files are being extracted). These instructions assume that you
are using the Terminal application found in Applications-> Utilities-> Terminal.
[server1]$ cd /Library
[server1]$ sudo /usr/bin/gnutar xfz jakarta-tomcat-5.5.27.tar.gz
[server1]$ sudo mv jakarta-tomcat-5.5.27 tomcat
Installing and Configuring Mathematica
Install the version of Mathematica appropriate for the platform you wish to use for your web
server. You should choose a single-machine installation. When you have finished, you should be
able to run Mathematica interactively to validate your installation. If Mathematica cannot run,
then webMathematica cannot run.
If you already have an installation of Mathematica on your server, you do not need to install
Mathematica again, but can proceed with the remaining installation steps. With an existing
installation of Mathematica, you may place your webMathematica license information into a
different location, as described in the following section. Placing the license information in a
different location will ensure that an interactive usage of Mathematica on your server does not
interfere with the operation of your webMathematica site. One possible alternative directory is
the webMathematica/WEB-INF/conf directory as demonstrated in the section on installing
webMathematica into Tomcat. Note that if you install the license in a special file, you will have
to set the -pwfile option when you run Mathematica outside of webMathematica.
Installing the webMathematica Web Application
This section describes how to install webMathematica components into your servlet container.
For most servlet containers, this involves deploying the webMathematica web application found
in archived form on the webMathematica Tools CD-ROM or from your download. Separate
webMathematica User Guide 21
installation instructions are given for some different servlet containers. A web application is a
collection of HTML and other web components, which are placed in a specific directory struc-
ture. Any servlet container that supports web applications will be able to use these files in a
standard way. Web applications support a special type of archive called a WAR archive, which is
supported by some servlet containers. webMathematica provides a WAR archive of the webMath-
ematica archive.
Tomcat
This section describes the deployment of the webMathematica webapp in Tomcat. There are
two steps: unpacking the webMathematica archive and configuring the MSPConfiguration.xml
file.
First, choose one of the webMathematica archives from the Tools CD-ROM; for example, webÖ
Mathematica.zip or webMathematica.tar.gz. Unpack the archive into the webMathematica
directory located in the Tomcat webapps directory. This is usually found in the top-level direc-
tory of Tomcat. You have now created a web application called webMathematica. Some of the
contents of the top directory of Tomcat, along with the location of the webapps directory and
webMathematica web application, are shown below.
tomcat
conf
bin
logs
lib
webapps
webMathematica
Second, configure the file MSPConfiguration.xml, located in the WEB-INF/conf directory. This
file holds various site-specific parameters and may need modification for your site. The settings
that can be placed into MSPConfiguration.xml are described in the section Site Configuration.
The most important setting is KernelExecutable, the location of the Mathematica kernel. The
MSPConfiguration.xml that ships with webMathematica contains settings suitable for a default
installation of Mathematica for Windows, Unix, Linux, and Mac OS X. However, if you install
Mathematica into a nondefault location, you will need to modify this file. For example, if you
installed Mathematica into E:Mathematica, make the following setting of KernelExecutable in
MSPConfiguration.xml.
22 webMathematica User Guide
<KernelExecutable>
E:MathematicaMathKernel.exe
</KernelExecutable>
Another reason to modify MSPConfiguration.xml is to store your webMathematica license in its
own password file, for example, webMathematica/WEB-INF/conf/mathpass. It would then be
necessary to modify KernelLaunchFlags in MSPConfiguration.xml to ensure that Mathematica
uses this location. The following shows how this could be done for a typical Windows installation.
<KernelLaunchFlags>
-pwfile c:/Program Files/tomcat/webapps/webMathematica/WEB-
INF/conf/mathpass
</KernelLaunchFlags>
A typical setting for MSPConfiguration.xml to use a special mathpass file under Unix is shown
below.
<KernelLaunchFlags>
-pwfile /usr/local/tomcat/webapps/webMathematica/WEF-INF/conf/mathpass
</KernelLaunchFlags>
Under Unix, you may need to add a FrontEndLaunchFlags parameter so the front end can run
properly. In the following example, the front end will be launched to use DISPLAY 1 with fixed
geometry and in server mode. For more information on running the front end under Unix, see
the documentation section Configuring for the X Window System.
<FrontEndLaunchFlags>
-display :1 -nogui -geometry 1000x500+10+10
</FrontEndLaunchFlags>
Other Servlet Engines
If you are unfamiliar with servlets, then it is recommended that you use Apache Tomcat. You
should only use another servlet engine if you are already experienced with it.
If you have some other servlet engine, follow its instructions for installing a web application,
which may be supported by some special tools. After installing the web application, you will
need to modify the MSPConfiguration.xml file as described in the section on installing under
Tomcat. It may also be necessary to make various modifications to MSPConfiguration.xml,
such as changing the JLinkNativeLibraryDirectory setting.
webMathematica User Guide 23
Configuring for the X Window System (Unix only)
There are special problems associated with running the Mathematica front end under X from
within a web server. This is because, typically, the web server is run as a special account, such
as tomcat. This means that when webMathematica runs the front end, it is running as this
account. For the front end to operate, it must connect to an X server; this could be achieved by
logging into the console of the web server machine with this special account running an X
server. There are a few problems with this approach: first, you may not want to leave the
machine with an open login on the console; secondly, every time the front end does something,
a window will appear on the screen, which may be distracting for someone using the machine.
If a different user logs into the console and runs an X server, the front end (which is run by the
special webMathematica account) will not be able to connect to this server at all under the
standard authentication system of X. While it is possible to configure the server to allow these
connections, it is not satisfactory because webMathematica will be displaying windows on the
screen every time it does something with the front end. This topic is discussed in greater length
in a later section.
These problems are solved by running a virtual X server, such as Xvnc, as described in the
following section. Running a virtual server prevents the windows created by the Mathematica
front end from displaying on the screen console of the computer running Mathematica.
Configuring Xvnc and webMathematica
Xvnc is the Unix VNC server. It provides a virtual X server that can be used by applications,
such as the Mathematica front end, when it is running for webMathematica. It also provides a
VNC server so that a VNC viewer can connect to view and control any applications running in
the server. This can be useful since it can help track down problems in running the front end.
Xvnc comes with a number of Unix distributions. It can also be ovtained from RealVNC,
http://www.realvnc.com/, and TightVNC, http://www.tightvnc.com.
24 webMathematica User Guide
Install Xvnc
Installation of Xvnc is quite straightforward; you unpack the archive and then copy the relevant
files into some local bin directory, for example, /usr/local/bin. (Note that some modern
Linux distributions already have Xvnc installed.) Copying of the Xvnc binaries is shown below.
[server1]$ cp vncviewer vncserver vncpasswd vncconnect Xvnc /usr/local/bin
Launch Xvnc
Launching Xvnc is also quite straightforward; this should be done as the user that will be run-
ning webMathematica, for example, the user tomcat. The first time Xvnc is launched, it asks for
a password. In the example below, the server is launched as display :1.
[server1]$ su tomcat
[server1]$ vncserver
You will require a password to access your desktops.
Password:
Verify:
New'X' desktop is server1:1
Creating default startup script /home/tomcat/.vnc/xstartup
Starting applications specified in /home/tomcat/.vnc/xstartup
Log file is /home/tomcat/.vnc/server1.wolfram.com:1.log
Test Xvnc
Once it is launched, it is a good idea to test the server by running an application to use it, for
example, the Mathematica front end. This is shown below.
[server1]$ su tomcat
[server1]$ mathematica -display :1
Of course, when this is done, you do not see an actual window on your screen; this is because
it is a virtual server. To see the window from the Mathematica front end, you can run the
vncviewer. This can be done as shown below.
[server1]$ vncviewer :1
This should show you a screen with the front end window visible. You should be able to type
into the front end and see it working. At any time webMathematica is running, you can view the
desktop with vncviewer.
webMathematica User Guide 25
Configure webMathematica
The final step is to modify your MSPConfiguration.xml file to instruct the front end to use this
server. The setting of FrontEndLaunchFlags is described in the Appendix: Site Configuration.
Here is a sample setting that connects to the X server on display :1.
<FrontEndLaunchFlags>
-display :1 -nogui -geometry 1000x500+10+10
</FrontEndLaunchFlags>
Now your Unix server should be ready to run webMathematica.
If you find that the front end does not launch correctly, it may help to add the name of the
server in the configuration file. An example is shown below; here, myserver is the name of the
machine on which webMathematica and Xvnc are running.
<FrontEndLaunchFlags>
-display myserver:1 -nogui -geometry 1000x500+10+10
</FrontEndLaunchFlags>
Other X Related Issues
The following section describes a number of further issues that relate to using webMathematica
in conjunction with an X server. If you have set up an Xvnc server as described above it should
not be necessary to study these.
Connecting to the X Server
When the Mathematica front end runs, it must connect to an X server. If the X server is being
run by a different user than the user running the front end, the X server will reject the connec-
tion, as shown below.
[root]# su tomcat
bash$ mathematica
Xlib:connection to ":0.0" refused by server
Xlib:Client is not authorized to connect to Server
xset:unable to open display ":0.0"
Xlib:connection to ":0.0" refused by server
Xlib:Client is not authorized to connect to Server
xset:unable to open display ":0.0"
Xlib:connection to ":0.0" refused by server
26 webMathematica User Guide
Xlib:Client is not authorized to connect to Server
xset:unable to open display ":0.0"
Xlib:connection to ":0.0" refused by server
Xlib:Client is not authorized to connect to Server
XMathematica:can't open display:0.0,exiting...
bash$
One way to avoid this problem is to allow all connections from the local machine.
[root]# xhost +localhost
localhost being added to access control list
[root]# su tomcat
bash$ mathematica
bash$
This is not a good technique since there is a potential for security problems. These are probably
limited since it is only connections from the same machine that are allowed. Another problem is
that every time the front end is used, a window will be drawn on the screen, which may be
annoying to a user of the system.
A more satisfactory alternative is to run a virtual X server, such as Xvnc.
Xvfb
Xvfb is a virtual frame buffer server described at http://www.xfree86.org/4.3.0/Xvfb.1.html. It
can be used as an alternative to Xvnc, but typically we have found Xvnc to be easier to use and
provide more functionality.
For Linux, you can download an RPM archive from http://www.redhat.com. After installation,
you can launch it as follows (you will probably run this as root).
su tomcat -c "/usr/X11R6/bin/Xvfb :1 -fp
unix/:7100,/usr/local/Wolfram/Mathematica/4.2/SystemFiles/Fonts/Type1,
/usr/local/Wolfram/Mathematica/4.2/SystemFiles/Fonts/BDF -screen 0
800x600x24 " &
This command launches Xvfb referencing a font server on port 7100 and adding directories that
contain the Mathematica fonts. Note that if you install Mathematica in some alternative loca-
tion, you should modify these directories. Under some Mathematica installations the location of
Mathematica fonts is added to the font server configuration; in this case the Mathematica fonts
do not need to be referenced when Xvfb is launched. Xvfb could then be launched as shown
here.
su tomcat -c "/usr/X11R6/bin/Xvfb :1 -fp unix/:7100" &
webMathematica User Guide 27
In these examples, Xvfb expects to use port 7100 on the local machine for the font server. The
actual setting may need to be modified if some alternative configuration of font server is used.
For example, under Redhat 6 the font server uses a local Unix socket and Xvfb should be
launched as follows.
su tomcat -c "/usr/X11R6/bin/Xvfb :1 -fp
unix/:-1,/usr/local/Wolfram/Mathematica/4.2/SystemFiles/Fonts/Type1,
/usr/local/Wolfram/Mathematica/4.2/SystemFiles/Fonts/BDF -screen 0
800x600x24 " &
If you are not running a font server, you may need to launch Xvfb with no font server refer-
ence. In this case, it may be necessary to copy the Mathematica fonts into the X distribution
layout as described in the section below on manual font installation.
su tomcat -c "/usr/X11R6/bin/Xvfb :1 -screen 0 800x600x24 "&
Once you have launched the virtual frame buffer server, you can test that it is running. You will
probably run this as root.
[root]# su tomcat
bash$ mathematica -display :1
Of course, one problem with confirming that the front end is running correctly with this server
is that you cannot see it on the screen! This makes it hard to see a dialog box indicating an
error. One way to see what the front end is displaying is to inspect a dump of the server with
xwd and xwud, which you can do with the following.
xwd -display :1 -root | xwud
This will show what the front end is displaying. For example, if you see a message about not
finding the password, you may need to add a pwfile command-line option.
When you are running the virtual frame buffer X server, you will need to modify your MSPConfigÖ
uration.xml file to instruct the front end to use this server. The setting of FrontEndLaunchÖ
Flags is described in Appendix: Configuration. Here is a sample setting.
<FrontEndLaunchFlags>
-display :1 -nogui -geometry 1000x500+10+10
</FrontEndLaunchFlags>
On some systems, such as Sun/Solaris, the X server has problems when being launched by the
user tomcat since the permissions to the /tmp/.X11 directories have been restricted for secu-
28 webMathematica User Guide
rity reasons. The problem manifests itself with a message that says the system cannot establish
any listening sockets. One solution would be to modify the directories so that tomcat can write
to them. For more detail, see http://www.faqs.org/faqs/Solaris2/FAQ/.
Manual Font Installation
The front end cannot run without access to the Mathematica fonts. If you notice from the out-
put of the X server with vncviewer or xwd that the front end is displaying a dialog box indicat-
ing that it cannot find its fonts, you will have to take some further steps to locate the fonts.
One solution that is simple but drastic is to copy the Mathematica fonts into your X distribution.
cd /usr/X11R6/lib/X11/fonts
cp -r 75dpi 75dpi.orig
cd 75dpi
cp /usr/local/Wolfram/Mathematica/5.1/SystemFiles/Fonts/X/*.bdf .
mkfontdir
This is really a poor solution to be avoided if possible. One deficiency is that if you update your
copy of Mathematica, you will have to remember to copy the new fonts. The proper solution is
to launch Xvfb so it either uses a font server or a font path setting, as described above. Remem-
ber that this is not a problem when working under Windows.
Upgrading from webMathematica 2.3
This section discusses some of the issues that will concern you if you already have webMathe-
matica. If you are using an older servlet container, this may be a good opportunity to upgrade
to something more recent. If you are going to upgrade your servlet container, you could follow
the instructions at the beginning of this chapter as though this was a fresh installation of
webMathematica.
Install Mathematica
webMathematica comes with a copy of Mathematica and this should be installed as discussed in
the section on Installing and Configuring Mathematica.
If you have installed any applications into your copy of Mathematica, you will need to make
them available to Mathematica. This is discussed in the section Installing Packages. Note that
you should not copy the MSP application to Mathematica.
webMathematica User Guide 29
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide
webMathematica Users Guide

Más contenido relacionado

La actualidad más candente

Administrator en
Administrator enAdministrator en
Administrator enCáo Già
 
Epo 450 product_guide_en-us
Epo 450 product_guide_en-usEpo 450 product_guide_en-us
Epo 450 product_guide_en-uslvaloto
 
Ad Ch.1 8 (1)
Ad Ch.1 8 (1)Ad Ch.1 8 (1)
Ad Ch.1 8 (1)gopi1985
 
Junipe 1
Junipe 1Junipe 1
Junipe 1Ugursuz
 
Teamviewer manual
Teamviewer manualTeamviewer manual
Teamviewer manualjeetjsr11
 
Nsr Userguide
Nsr UserguideNsr Userguide
Nsr Userguidekerklaanm
 
Sphere L22 Microphone System User Guide
Sphere L22 Microphone System User GuideSphere L22 Microphone System User Guide
Sphere L22 Microphone System User GuideRob Wenig
 
User Manual Joomla2006
User Manual Joomla2006User Manual Joomla2006
User Manual Joomla2006 defg gf
 
Jasper server ce-install-guide
Jasper server ce-install-guideJasper server ce-install-guide
Jasper server ce-install-guidewoid
 
Ibm power vc version 1.2.3 introduction and configuration
Ibm power vc version 1.2.3 introduction and configurationIbm power vc version 1.2.3 introduction and configuration
Ibm power vc version 1.2.3 introduction and configurationgagbada
 
Grundfos Wincaps Manual Guide
Grundfos Wincaps Manual GuideGrundfos Wincaps Manual Guide
Grundfos Wincaps Manual GuideSERDAR BELBAĞ
 
Zend Server Ce Reference Manual V403
Zend Server Ce Reference Manual V403Zend Server Ce Reference Manual V403
Zend Server Ce Reference Manual V403SMKF Plus Bani Saleh
 
Python programming
Python programmingPython programming
Python programmingKeshav Gupta
 

La actualidad más candente (18)

R12_Win81_UserGuide_en_US_1
R12_Win81_UserGuide_en_US_1R12_Win81_UserGuide_en_US_1
R12_Win81_UserGuide_en_US_1
 
Administrator en
Administrator enAdministrator en
Administrator en
 
Epo 450 product_guide_en-us
Epo 450 product_guide_en-usEpo 450 product_guide_en-us
Epo 450 product_guide_en-us
 
Air os ug_v80
Air os ug_v80Air os ug_v80
Air os ug_v80
 
Ad Ch.1 8 (1)
Ad Ch.1 8 (1)Ad Ch.1 8 (1)
Ad Ch.1 8 (1)
 
R admin
R adminR admin
R admin
 
Junipe 1
Junipe 1Junipe 1
Junipe 1
 
Teamviewer manual
Teamviewer manualTeamviewer manual
Teamviewer manual
 
Guia do usuário pb50, PB51
Guia do usuário pb50, PB51Guia do usuário pb50, PB51
Guia do usuário pb50, PB51
 
R Admin
R AdminR Admin
R Admin
 
Nsr Userguide
Nsr UserguideNsr Userguide
Nsr Userguide
 
Sphere L22 Microphone System User Guide
Sphere L22 Microphone System User GuideSphere L22 Microphone System User Guide
Sphere L22 Microphone System User Guide
 
User Manual Joomla2006
User Manual Joomla2006User Manual Joomla2006
User Manual Joomla2006
 
Jasper server ce-install-guide
Jasper server ce-install-guideJasper server ce-install-guide
Jasper server ce-install-guide
 
Ibm power vc version 1.2.3 introduction and configuration
Ibm power vc version 1.2.3 introduction and configurationIbm power vc version 1.2.3 introduction and configuration
Ibm power vc version 1.2.3 introduction and configuration
 
Grundfos Wincaps Manual Guide
Grundfos Wincaps Manual GuideGrundfos Wincaps Manual Guide
Grundfos Wincaps Manual Guide
 
Zend Server Ce Reference Manual V403
Zend Server Ce Reference Manual V403Zend Server Ce Reference Manual V403
Zend Server Ce Reference Manual V403
 
Python programming
Python programmingPython programming
Python programming
 

Similar a webMathematica Users Guide

인터맥산업용PC Intermec CV61 12.1인치 차량탑재용 산업용패널PC 매뉴얼
인터맥산업용PC Intermec CV61 12.1인치 차량탑재용 산업용패널PC 매뉴얼인터맥산업용PC Intermec CV61 12.1인치 차량탑재용 산업용패널PC 매뉴얼
인터맥산업용PC Intermec CV61 12.1인치 차량탑재용 산업용패널PC 매뉴얼HION IT
 
Visual Studio 2008 Beginning Asp Net 3 5 In C# 2008 From Novice To Professi...
Visual Studio 2008   Beginning Asp Net 3 5 In C# 2008 From Novice To Professi...Visual Studio 2008   Beginning Asp Net 3 5 In C# 2008 From Novice To Professi...
Visual Studio 2008 Beginning Asp Net 3 5 In C# 2008 From Novice To Professi...guest4c5b8c4
 
Intel Cloud Builder : Siveo
Intel Cloud Builder : SiveoIntel Cloud Builder : Siveo
Intel Cloud Builder : SiveoOdinot Stanislas
 
AltiGen Acm Administration Manual
AltiGen Acm Administration ManualAltiGen Acm Administration Manual
AltiGen Acm Administration ManualCTI Communications
 
Guide citrix presentation server™ - client for java administrator’s
Guide   citrix presentation server™ - client for java administrator’sGuide   citrix presentation server™ - client for java administrator’s
Guide citrix presentation server™ - client for java administrator’sxKinAnx
 
Perceptive nolij web installation and upgrade guide 6.8.x
Perceptive nolij web installation and upgrade guide 6.8.xPerceptive nolij web installation and upgrade guide 6.8.x
Perceptive nolij web installation and upgrade guide 6.8.xKumaran Balachandran
 
R installation and administration
R installation and administrationR installation and administration
R installation and administrationEric Espino
 
MetaFabric™ Architecture Virtualized Data Center: Design and Implementation G...
MetaFabric™ Architecture Virtualized Data Center: Design and Implementation G...MetaFabric™ Architecture Virtualized Data Center: Design and Implementation G...
MetaFabric™ Architecture Virtualized Data Center: Design and Implementation G...Juniper Networks
 
Windows_Server_2016_Virtualization White Paper By Veeam
Windows_Server_2016_Virtualization White Paper By VeeamWindows_Server_2016_Virtualization White Paper By Veeam
Windows_Server_2016_Virtualization White Paper By VeeamKesavan Munuswamy
 
Selenium jupiter j-unit 5 extension for selenium and appium
Selenium jupiter  j-unit 5 extension for selenium and appiumSelenium jupiter  j-unit 5 extension for selenium and appium
Selenium jupiter j-unit 5 extension for selenium and appiumViliamtrobich
 
Plesk 8.2 for Windows Domain Administrator's Guide
Plesk 8.2 for Windows Domain Administrator's GuidePlesk 8.2 for Windows Domain Administrator's Guide
Plesk 8.2 for Windows Domain Administrator's Guidewebhostingguy
 
Xen app getting-started-guide
Xen app getting-started-guideXen app getting-started-guide
Xen app getting-started-guidehergamia
 
Win plc engine-en
Win plc engine-enWin plc engine-en
Win plc engine-endreamtech2
 
Advanced Networking Concepts Applied Using Linux on IBM System z
Advanced Networking  Concepts Applied Using  Linux on IBM System zAdvanced Networking  Concepts Applied Using  Linux on IBM System z
Advanced Networking Concepts Applied Using Linux on IBM System zIBM India Smarter Computing
 
Deploying IBM Sametime 9 on AIX 7.1
Deploying IBM Sametime 9 on AIX 7.1Deploying IBM Sametime 9 on AIX 7.1
Deploying IBM Sametime 9 on AIX 7.1jackdowning
 

Similar a webMathematica Users Guide (20)

인터맥산업용PC Intermec CV61 12.1인치 차량탑재용 산업용패널PC 매뉴얼
인터맥산업용PC Intermec CV61 12.1인치 차량탑재용 산업용패널PC 매뉴얼인터맥산업용PC Intermec CV61 12.1인치 차량탑재용 산업용패널PC 매뉴얼
인터맥산업용PC Intermec CV61 12.1인치 차량탑재용 산업용패널PC 매뉴얼
 
Manual CV51
Manual CV51Manual CV51
Manual CV51
 
Visual Studio 2008 Beginning Asp Net 3 5 In C# 2008 From Novice To Professi...
Visual Studio 2008   Beginning Asp Net 3 5 In C# 2008 From Novice To Professi...Visual Studio 2008   Beginning Asp Net 3 5 In C# 2008 From Novice To Professi...
Visual Studio 2008 Beginning Asp Net 3 5 In C# 2008 From Novice To Professi...
 
Intel Cloud Builder : Siveo
Intel Cloud Builder : SiveoIntel Cloud Builder : Siveo
Intel Cloud Builder : Siveo
 
AltiGen Acm Administration Manual
AltiGen Acm Administration ManualAltiGen Acm Administration Manual
AltiGen Acm Administration Manual
 
document
documentdocument
document
 
Guide citrix presentation server™ - client for java administrator’s
Guide   citrix presentation server™ - client for java administrator’sGuide   citrix presentation server™ - client for java administrator’s
Guide citrix presentation server™ - client for java administrator’s
 
AltiGen M A X C S A C M 6
AltiGen M A X C S  A C M 6AltiGen M A X C S  A C M 6
AltiGen M A X C S A C M 6
 
Perceptive nolij web installation and upgrade guide 6.8.x
Perceptive nolij web installation and upgrade guide 6.8.xPerceptive nolij web installation and upgrade guide 6.8.x
Perceptive nolij web installation and upgrade guide 6.8.x
 
Administrator manual-e2
Administrator manual-e2Administrator manual-e2
Administrator manual-e2
 
R installation and administration
R installation and administrationR installation and administration
R installation and administration
 
MetaFabric™ Architecture Virtualized Data Center: Design and Implementation G...
MetaFabric™ Architecture Virtualized Data Center: Design and Implementation G...MetaFabric™ Architecture Virtualized Data Center: Design and Implementation G...
MetaFabric™ Architecture Virtualized Data Center: Design and Implementation G...
 
Windows_Server_2016_Virtualization White Paper By Veeam
Windows_Server_2016_Virtualization White Paper By VeeamWindows_Server_2016_Virtualization White Paper By Veeam
Windows_Server_2016_Virtualization White Paper By Veeam
 
Selenium jupiter j-unit 5 extension for selenium and appium
Selenium jupiter  j-unit 5 extension for selenium and appiumSelenium jupiter  j-unit 5 extension for selenium and appium
Selenium jupiter j-unit 5 extension for selenium and appium
 
Plesk 8.2 for Windows Domain Administrator's Guide
Plesk 8.2 for Windows Domain Administrator's GuidePlesk 8.2 for Windows Domain Administrator's Guide
Plesk 8.2 for Windows Domain Administrator's Guide
 
Xen app getting-started-guide
Xen app getting-started-guideXen app getting-started-guide
Xen app getting-started-guide
 
Win plc engine-en
Win plc engine-enWin plc engine-en
Win plc engine-en
 
Advanced Networking Concepts Applied Using Linux on IBM System z
Advanced Networking  Concepts Applied Using  Linux on IBM System zAdvanced Networking  Concepts Applied Using  Linux on IBM System z
Advanced Networking Concepts Applied Using Linux on IBM System z
 
Deploying IBM Sametime 9 on AIX 7.1
Deploying IBM Sametime 9 on AIX 7.1Deploying IBM Sametime 9 on AIX 7.1
Deploying IBM Sametime 9 on AIX 7.1
 
Xpc target ug
Xpc target ugXpc target ug
Xpc target ug
 

Último

Difference Between Search & Browse Methods in Odoo 17
Difference Between Search & Browse Methods in Odoo 17Difference Between Search & Browse Methods in Odoo 17
Difference Between Search & Browse Methods in Odoo 17Celine George
 
FILIPINO PSYCHology sikolohiyang pilipino
FILIPINO PSYCHology sikolohiyang pilipinoFILIPINO PSYCHology sikolohiyang pilipino
FILIPINO PSYCHology sikolohiyang pilipinojohnmickonozaleda
 
ANG SEKTOR NG agrikultura.pptx QUARTER 4
ANG SEKTOR NG agrikultura.pptx QUARTER 4ANG SEKTOR NG agrikultura.pptx QUARTER 4
ANG SEKTOR NG agrikultura.pptx QUARTER 4MiaBumagat1
 
ENGLISH6-Q4-W3.pptxqurter our high choom
ENGLISH6-Q4-W3.pptxqurter our high choomENGLISH6-Q4-W3.pptxqurter our high choom
ENGLISH6-Q4-W3.pptxqurter our high choomnelietumpap1
 
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...Postal Advocate Inc.
 
Barangay Council for the Protection of Children (BCPC) Orientation.pptx
Barangay Council for the Protection of Children (BCPC) Orientation.pptxBarangay Council for the Protection of Children (BCPC) Orientation.pptx
Barangay Council for the Protection of Children (BCPC) Orientation.pptxCarlos105
 
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptxECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptxiammrhaywood
 
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdf
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdfVirtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdf
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdfErwinPantujan2
 
Student Profile Sample - We help schools to connect the data they have, with ...
Student Profile Sample - We help schools to connect the data they have, with ...Student Profile Sample - We help schools to connect the data they have, with ...
Student Profile Sample - We help schools to connect the data they have, with ...Seán Kennedy
 
ACC 2024 Chronicles. Cardiology. Exam.pdf
ACC 2024 Chronicles. Cardiology. Exam.pdfACC 2024 Chronicles. Cardiology. Exam.pdf
ACC 2024 Chronicles. Cardiology. Exam.pdfSpandanaRallapalli
 
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...JhezDiaz1
 
Earth Day Presentation wow hello nice great
Earth Day Presentation wow hello nice greatEarth Day Presentation wow hello nice great
Earth Day Presentation wow hello nice greatYousafMalik24
 
Procuring digital preservation CAN be quick and painless with our new dynamic...
Procuring digital preservation CAN be quick and painless with our new dynamic...Procuring digital preservation CAN be quick and painless with our new dynamic...
Procuring digital preservation CAN be quick and painless with our new dynamic...Jisc
 
Concurrency Control in Database Management system
Concurrency Control in Database Management systemConcurrency Control in Database Management system
Concurrency Control in Database Management systemChristalin Nelson
 
Global Lehigh Strategic Initiatives (without descriptions)
Global Lehigh Strategic Initiatives (without descriptions)Global Lehigh Strategic Initiatives (without descriptions)
Global Lehigh Strategic Initiatives (without descriptions)cama23
 
Culture Uniformity or Diversity IN SOCIOLOGY.pptx
Culture Uniformity or Diversity IN SOCIOLOGY.pptxCulture Uniformity or Diversity IN SOCIOLOGY.pptx
Culture Uniformity or Diversity IN SOCIOLOGY.pptxPoojaSen20
 
What is Model Inheritance in Odoo 17 ERP
What is Model Inheritance in Odoo 17 ERPWhat is Model Inheritance in Odoo 17 ERP
What is Model Inheritance in Odoo 17 ERPCeline George
 
Choosing the Right CBSE School A Comprehensive Guide for Parents
Choosing the Right CBSE School A Comprehensive Guide for ParentsChoosing the Right CBSE School A Comprehensive Guide for Parents
Choosing the Right CBSE School A Comprehensive Guide for Parentsnavabharathschool99
 
AMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdf
AMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdfAMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdf
AMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdfphamnguyenenglishnb
 

Último (20)

Difference Between Search & Browse Methods in Odoo 17
Difference Between Search & Browse Methods in Odoo 17Difference Between Search & Browse Methods in Odoo 17
Difference Between Search & Browse Methods in Odoo 17
 
FILIPINO PSYCHology sikolohiyang pilipino
FILIPINO PSYCHology sikolohiyang pilipinoFILIPINO PSYCHology sikolohiyang pilipino
FILIPINO PSYCHology sikolohiyang pilipino
 
ANG SEKTOR NG agrikultura.pptx QUARTER 4
ANG SEKTOR NG agrikultura.pptx QUARTER 4ANG SEKTOR NG agrikultura.pptx QUARTER 4
ANG SEKTOR NG agrikultura.pptx QUARTER 4
 
ENGLISH6-Q4-W3.pptxqurter our high choom
ENGLISH6-Q4-W3.pptxqurter our high choomENGLISH6-Q4-W3.pptxqurter our high choom
ENGLISH6-Q4-W3.pptxqurter our high choom
 
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
 
Barangay Council for the Protection of Children (BCPC) Orientation.pptx
Barangay Council for the Protection of Children (BCPC) Orientation.pptxBarangay Council for the Protection of Children (BCPC) Orientation.pptx
Barangay Council for the Protection of Children (BCPC) Orientation.pptx
 
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptxECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
 
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdf
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdfVirtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdf
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdf
 
Student Profile Sample - We help schools to connect the data they have, with ...
Student Profile Sample - We help schools to connect the data they have, with ...Student Profile Sample - We help schools to connect the data they have, with ...
Student Profile Sample - We help schools to connect the data they have, with ...
 
ACC 2024 Chronicles. Cardiology. Exam.pdf
ACC 2024 Chronicles. Cardiology. Exam.pdfACC 2024 Chronicles. Cardiology. Exam.pdf
ACC 2024 Chronicles. Cardiology. Exam.pdf
 
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
 
Earth Day Presentation wow hello nice great
Earth Day Presentation wow hello nice greatEarth Day Presentation wow hello nice great
Earth Day Presentation wow hello nice great
 
YOUVE_GOT_EMAIL_PRELIMS_EL_DORADO_2024.pptx
YOUVE_GOT_EMAIL_PRELIMS_EL_DORADO_2024.pptxYOUVE_GOT_EMAIL_PRELIMS_EL_DORADO_2024.pptx
YOUVE_GOT_EMAIL_PRELIMS_EL_DORADO_2024.pptx
 
Procuring digital preservation CAN be quick and painless with our new dynamic...
Procuring digital preservation CAN be quick and painless with our new dynamic...Procuring digital preservation CAN be quick and painless with our new dynamic...
Procuring digital preservation CAN be quick and painless with our new dynamic...
 
Concurrency Control in Database Management system
Concurrency Control in Database Management systemConcurrency Control in Database Management system
Concurrency Control in Database Management system
 
Global Lehigh Strategic Initiatives (without descriptions)
Global Lehigh Strategic Initiatives (without descriptions)Global Lehigh Strategic Initiatives (without descriptions)
Global Lehigh Strategic Initiatives (without descriptions)
 
Culture Uniformity or Diversity IN SOCIOLOGY.pptx
Culture Uniformity or Diversity IN SOCIOLOGY.pptxCulture Uniformity or Diversity IN SOCIOLOGY.pptx
Culture Uniformity or Diversity IN SOCIOLOGY.pptx
 
What is Model Inheritance in Odoo 17 ERP
What is Model Inheritance in Odoo 17 ERPWhat is Model Inheritance in Odoo 17 ERP
What is Model Inheritance in Odoo 17 ERP
 
Choosing the Right CBSE School A Comprehensive Guide for Parents
Choosing the Right CBSE School A Comprehensive Guide for ParentsChoosing the Right CBSE School A Comprehensive Guide for Parents
Choosing the Right CBSE School A Comprehensive Guide for Parents
 
AMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdf
AMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdfAMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdf
AMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdf
 

webMathematica Users Guide

  • 2. For use with Wolfram webMathematica™ 3.0 and higher. For the latest updates and corrections to this manual: visit reference.wolfram.com For information on additional copies of this documentation: visit the Customer Service website at www.wolfram.com/services/customerservice or email Customer Service at info@wolfram.com Comments on this manual are welcomed at: comments@wolfram.com Printed in the United States of America. 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 ©2009 Wolfram Research, Inc. All rights reserved. No part of this document may be reproduced or transmitted, in any form or by any means, electronic, mechanical, photocopying, recording, or otherwise, without the prior written permission of the copyright holder. Wolfram Research is the holder of the copyright to the various Wolfram Mathematica software systems ("Software") described in this document, including, without limitation, such aspects of the system as its code, structure, sequence, organization, "look and feel", programming language, and compilation of command names. Use of the Software unless pursuant to the terms of a license granted by Wolfram Research or as otherwise authorized by law is an infringement of the copyright. Wolfram Research, Inc. and Wolfram Media, Inc. ("Wolfram") make no representations, express, statutory, or implied, with respect to the Software (or any aspect thereof), including, without limitation, any implied warranties of merchantability, interoperability, or fitness for a particular purpose, all of which are expressly disclaimed. Wolfram does not warrant that the functions of the Software will meet your requirements or that the operation of the Software will be uninterrupted or error free. As such, Wolfram does not recommend the use of the software described in this document for applications in which errors or omissions could threaten life, injury or significant loss. Mathematica and MathLink are registered trademarks of Wolfram Research, Inc. J/Link, MathLM, .NET/Link, Wolfram Workbench, , and webMathematica are trademarks of Wolfram Research, Inc. Windows is a registered trademark of Microsoft Corporation in the United States and other countries. Macintosh is a registered trademark of Apple Computer, Inc. All other trademarks used herein are the property of their respective owners. Mathematica is not associated with Mathematica Policy Research, Inc. 1550362 0909.JP gridMathematica
  • 3. webMathematica Users Guide Introduction to webMathematica What Is webMathematica? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Why Use Mathematica in a Website? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Computation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Interactive Programming Language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Connectivity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 The Mathematica Front End . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Mathematical Typesetting and MathML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Why a Web Interface? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Ease of Use . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Server-Based Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Web Technologies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Areas of Use for webMathematica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Web Computation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Education . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Publishing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Research . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Hobbyist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 webMathematica Technology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 New Features of webMathematica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 webMathematica 3.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 webMathematica 2.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 webMathematica 2.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 webMathematica 2.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 webMathematica 2.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
  • 4. Installation Setting Up a Servlet Container . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Setting Up Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Unix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Mac OS X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Setting Up Tomcat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Unix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Mac OS X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Installing and Configuring Mathematica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Installing the webMathematica Web Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Tomcat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Other Servlet Engines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Configuring for the X Window System (Unix only) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Configuring Xvnc and webMathematica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Install Xvnc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Launch Xvnc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Test Xvnc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Configure webMathematica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Other X Related Issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Connecting to the X Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Xvfb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Manual Font Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Upgrading from webMathematica 2.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Install Mathematica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Install the webMathematica Web Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 Configure the New Layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 web.xml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 MSPConfiguration.xml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 Security Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 Move Content to the New Layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Finalize the Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Optional Further Configuring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 MSP Mathematica Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Launching webMathematica Automatically . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Unix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
  • 5. Web Server Connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Apache and Tomcat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 Microsoft Servers and Tomcat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Basic Examples Hello.jsp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 Working with Variables: Variables.jsp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 MSP Functions: Expand.jsp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Graphics: Plot.jsp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Typeset Images: Integrate.jsp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Live 3D Plotting: Plot3DLive.jsp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 Getting Messages: Messages.jsp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 Returning General Content: Content.jsp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Interactive Web: SliderPlot.jsp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 Applets: TextApplet.jsp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 JavaScript: PlotScript.jsp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 Setting Variables: SetBasic.jsp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 Getting Variables: GetBasic.jsp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 Developing Your Own Pages Wolfram Workbench . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 Tips and Tricks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 Coding in Pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 Templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 Browse Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 Design Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 Banners and Buttons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 Minimal Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 Minimal File Layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
  • 6. Applications XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Introduction to XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 XML Compliance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Mathematica Support for XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 webMathematica XML Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 MathML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 Embedding MathML in Web Documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 XHTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 XHTML and MathML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 Rendering XHTML and MathML Documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 Generating MathML from webMathematica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 MathML Integrate Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 SVG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 Plotting with SVG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 SVG Animations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 HTML Formatting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 The HTML Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 HTMLTableForm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 HTMLFormat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 HTMLSelect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 HTMLCheckBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 webMathematica Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 Table Formatting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 Select Formatting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 Interactive Web Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 Example: SliderPlot.jsp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 Formatting and Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 Underlying Technology and Limitations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 Using Java APIs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 Server APIs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 Other Java APIs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 Data Loading and Computation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 File I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 HTTP Upload . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 Database Connectivity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 Web Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
  • 7. Web Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 Data Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 Loading Data: Load.jsp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 Uploading Data: Upload.jsp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 Session Storage of Data: Session.jsp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 Database Connections: Database.jsp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 Mathematica Packages and Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 Loading Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 Writing Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 Installing Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 webMathematica Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 $BaseDirectory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 $UserBaseDirectory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 The Script Directory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 $TopDirectory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 Absolute Filename . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 Extended Page Language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 Expression Language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 JSP Standard Tags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 choose/when/otherwise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 Queuing of Long Calculations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 Interacting with the Queue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 Lifetime of a Queued Request . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 Organizing and Configuring a Queued Pool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 Alternative Server Technologies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 JavaServer Pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 PDF Documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 Generating a Mathematica Notebook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 Converting to PDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 Returning PDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 Creating PDF Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 Returning General Content . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 Direct Return . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 MSPReturn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 MSPURLStore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
  • 8. AJAX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 Time Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 HTML Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 Web Services and XML Exchange . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 Web Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 Informal Web Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 AJAX Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 Mathematica SOAP Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 webMathematica SOAP Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 Echo Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 Plot Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 Excel Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 Type Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 Simple Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 Date and Time Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 Binary Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 SchemaExpr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 SchemaMathML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 Errors and Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 Advanced Topics Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 Input Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 Interpretation of Input Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 Interpreted versus Noninterpreted Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 MSPBlock versus MSPToExpression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 Page Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 Session Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 Server Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 Mathematica Program Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 MSPBlock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 MSPToExpression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 Avoid ToExpression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
  • 9. Security Validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 The Validation Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 Configuring a Security Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 ToExpression Validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 Security and Kernel Pools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 Access Restrictions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 Evaluation Formatting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 Automatic Formatting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 MSPFormat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 String Formatting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 Graphics and Image Formatting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 Suppressing Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 Multiple Calculations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 Multiple Kernel Pools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 Multiple Web Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 Mapping URLs onto JSPs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 Handling Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 Catching Mathematica Error Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 Adding an HTTP Error Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 Displaying Mathematics and Graphics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 MSP Functions Returning Images . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 LiveGraphics3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 Including Static Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 Troubleshooting Initial Checks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 Check the Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 Check the URL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 Check the Initial Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 Check the Kernel Monitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 Check the Logging System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 Check the Console Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 Check Mathematica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 Specific Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 Problems Running the Kernel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 Problems Running the Front End . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 Problems Testing Xvnc (Unix only) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 Problems Testing Xvfb (Unix only) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 Images Do Not Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
  • 10. Images Do Not Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 Mathematica Packages and Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 Kernel Initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 Vertical Alignment in Formatting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 Timeout Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 UnsatisfiedLinkError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 Cannot Load JLink` . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 NoClassDefFoundError: TryCatchFinally . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 NoClassDefFoundError: JLink Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 NoSuchMethodError: KernelData . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 Debugging webMathematica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 Not Using Wolfram Workbench . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 Using Wolfram Workbench . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 Logging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 webMathematica Logging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 Server Logging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 The Kernel Monitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 Reporting Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 Configuration CheckToExpression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 CollectStreams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 FileUploadSizeLimit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 FrontEndExecutable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194 FrontEndLaunchFlags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 JlinkNativeLibraryDirectory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 KeepFrontEndAlive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 KernelAcquireCode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 KernelAcquireLimit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 KernelBaseMemoryLimit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 KernelConnectLimit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 KernelDestroyCode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 KernelExecutable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 KernelInitializeCode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 KernelLaunchFlags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 KernelNumber . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 KernelPeakMemoryLimit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 KernelPool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
  • 11. KernelPool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 KernelPoolName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 KernelReleaseCode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 KernelTimeLimit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 SecurityConfigurationFile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212 URLPattern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 Functions HTMLCheckbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 HTMLFormat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 HTMLSelect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 HTMLTableForm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224 MSPBlock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 MSPException . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 MSPFormat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232 MSPGetMessages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235 MSPGetPrintOutput . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236 MSPGetUploadFile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 MSPGetUploadFileList . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239 MSPLive3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 MSPManipulate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242 MSPManipulateHeader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248 MSPPageDirectory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249 MSPPageOptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250 MSPReturn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 MSPRootDirectory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254 MSPSessionVariable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 MSPSetDefault . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256 MSPShow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258 MSPToExpression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259 MSPURLStore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262 MSPValue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264 MSPValueQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
  • 12. Guides Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271 Formatting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272 webMathematica Tags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273 Processing Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274 Web Interaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275 webMathematica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276 Tags evaluate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279 evaluateQueued . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281 set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283 get . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284 Appendix Processing a JSP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287 Mathematica Initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289 webMathematica Tags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290 Request Initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290 evaluate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292 Request Termination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294 get . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 evaluateQueued . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296 Mathematica Web Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297 Processing Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297 Formatting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 Web Interaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 Site Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299 MSPConfiguration.xml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299 Logging System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 Security Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 X Server Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
  • 13. LiveGraphics3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302 Dynamic HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304 Server Technology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304 Client Technology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305 Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309 Mathematica Technology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309 Mathematica Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310 Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310 Tomcat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310 Servers JSPs and Servlets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310 Web Browser Technologies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311 XML, MathML, and SVG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311 PDF Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312 The X Window System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312 Logging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
  • 14.
  • 15. Introduction to webMathematica This document provides a guide to the installation and operation of webMathematica and the development of a webMathematica site. This introduction considers the reasons for using Mathematica in a website, examines a few areas in which you might use webMathematica, briefly discusses the underlying technology, and outlines the requirements for running webMathematica. What Is webMathematica? webMathematica adds interactive calculations and visualization to a website by integrating Mathematica with the latest web server technology. The diagram below shows a view of a webMathematica site, http://library.wolfram.com/explorations/webUnrisk/index.html. This site gives a web browser interface to financial calculations and visualizations that are driven by Mathematica. In this site users are taken through a sequence of web pages in which they select different input parameters and submit data to build up a sequence of results.
  • 16. Why Use Mathematica in a Website? There are various important features that Mathematica can offer to a website, including computa- tion, an interactive programming language, connectivity, the Mathematica front end, and enhanced support for MathML. Computation Mathematica contains a large collection of functions for computing in many areas, such as numerics, symbolics, and graphics. webMathematica makes all of this functionality available over the web. Many web technologies, so powerful in many areas, are not well suited to scientific computa- tion; it is simply not their main focus. Mathematica, on the other hand, is very suitable for scientific computation and can provide this on the web. Interactive Programming Language Mathematica contains a high-level, interactive, functional programming language. It lends itself to rapid prototyping but can scale up to large intensive computations. These are also advan- tages for web content generation, since large sites can be developed with less programmer effort. Connectivity Mathematica connects readily to external services, which may be provided by languages such as Java, C, Fortran, or Perl. These services can provide a data source for computations and also take the results from Mathematica. It is particularly easy to connect to Java via J/Link, a toolkit for integrating Java into Mathematica. More information on J/Link can be found at http://www.wolfram.com/solutions/mathlink/jlink. 2 webMathematica User Guide
  • 17. The Mathematica Front End The Mathematica notebook user interface (front end) has long provided the premium mecha- nism for working with the Mathematica kernel. Now, webMathematica provides an alternative interface via the web. Even in a web environment, the front end is extremely useful. It is used to typeset mathematics and render two- and three-dimensional graphical objects into images. In addition, the front end can generate notebook documents on the server to send to the client. Mathematical Typesetting and MathML Mathematica is a premium system for interactive mathematical typesetting. It is also a powerful system for working with MathML, which is designed to allow the use and reuse of mathematical and scientific content on the web and by other applications. These features are a valuable component of webMathematica, which works well with the increasing number of tools that are available for MathML. Why a Web Interface? Some of the benefits that a web interface brings to Mathematica include ease of use and deliv- ery, as well as the large number of web development professionals and the many web technologies. Ease of Use To use a webMathematica site, all you need is a web browser. User interfaces can use standard web GUI elements, such as text fields, checkboxes, and drop-down lists. This reduces training time because users no longer have to learn different software applications. In many cases, no Mathematica experience is required. webMathematica User Guide 3
  • 18. Server-Based Configuration There is no software to buy, install, or maintain in order to use webMathematica sites. All end- users need is a web browser and, for advanced features like interactive 3D graphics, a Java Runtime Environment. This leads to significant savings over buying and maintaining user soft- ware and also ensures that every end-user always has the most recent version. An additional advantage is that webMathematica-enhanced websites can be accessed from many different types of computers. Web Technologies There are many people who are experts in working with servers and developing dynamic web- sites. They can choose from the many web technologies and tools to develop Mathematica- related sites. Thus, development is easier and the applications they build are more powerful. Areas of Use for webMathematica There are several areas of use for webMathematica. Some of these include web computation, education, publishing, research, and hobbyist calculations. Web Computation A major use of webMathematica is to build online tools for computation and visualization. An example is webUnrisk, http://library.wolfram.com/explorations/webUnrisk/index.html; some examples of webUnrisk are shown below. 4 webMathematica User Guide
  • 19. Education Mathematica is widely used in many areas of education. These applications can be extended to web-based education tools with webMathematica. The Integrator, http://integrals.wolfram.com, is a Wolfram Research-developed website that solves integration problems. Another use of webMathematica in education is Calc101, http://www.calc101.com, which mixes free and pay- per-use calculators that lead precollege and college students through integration and differentia- tion problems. Publishing Many publishers are developing web-based supplements to textbooks, manuals, and journals. webMathematica provides a suitable technology to support these efforts in technical subjects. An example web-based supplement, built with webMathematica, is available at http://library.wolfram.com/explorations/explorer/index.html, as shown in the following. webMathematica User Guide 5
  • 20. Research Researchers all over the world use Mathematica to investigate their fields of interest and develop techniques and algorithms for solving problems. All the Mathematica work they develop can now be delivered with live interactive websites, vastly increasing the number of people who can use and learn from their results. A typical website that plots surfaces of constant curvature is http://library.wolfram.com/webMathematica/Mathematics/ConstantCurvature.jsp. Hobbyist webMathematica allows individual users to showcase their personal interests with web-based interactive calculations and visualizations. AnalyticCycling.com, http://www.analyticcycling.com, provides a recreational website that takes advantage of the web Mathematica engine. Designed for technically oriented cyclists, AnalyticCycling.com offers web-based calculators that take a no-compromise, textbook approach to computing cycling performance. 6 webMathematica User Guide
  • 21. webMathematica Technology webMathematica is based on two standard Java technologies: Java Servlet and JavaServer Pages (JSPs). Servlets are special Java programs that run in a Java-enabled web server, which is typically called a "servlet container" (or sometimes a "servlet engine"). There are many different types of servlet containers that will run on many different operating systems and architectures. They can also be integrated into other web servers, such as the Apache web server. webMathematica allows a site to deliver HTML pages that are enhanced by the addition of Mathematica commands. When a request is made for one of these pages, the Mathematica commands are evaluated and the computed result is placed in the page. This is done with the standard Java templating mechanism, JavaServer Pages, making use of a special tags; exam- ples of these are given in a later section. webMathematica technology uses the request/response standard followed by web servers. Input can come from HTML forms, applets, JavaScript, and web-enabled applications. It is also possible to send data files to a webMathematica server for processing. Output can be many different formats such as HTML, images, Mathematica notebooks, MathML, SVG, XML, PostScript, and PDF. This user guide includes examples of working with all these different technologies. webMathematica provides a large library of Mathematica commands to handle the many possi- ble ways of working with Mathematica computations. An important part of webMathematica is the kernel manager that calls Mathematica in a robust, efficient, and secure manner. The man- ager maintains a pool of one or more Mathematica kernels and, in this way, can process more than one request at a time. An overview of the workings of a webMathematica site is shown here. 1. Browser sends request to webMathematica server. webMathematica User Guide 7
  • 22. webMathematica server acquires Mathematica kernel from the pool. 3. Mathematica kernel is initialized with input parameters, carries out calculations, and returns result to server. 4. webMathematica server returns Mathematica kernel to the pool. 5. webMathematica server returns result to browser. 8 webMathematica User Guide 2.
  • 23. Requirements The aim of webMathematica and MSP technology is to reduce the amount of extra knowledge required for developing a site to a minimum. In practice, this means knowing something about HTML and Mathematica. You do not need any special knowledge of Java, nor do you need to know anything about JavaScript. webMathematica also aims to automate the management of the site to make running, maintenance, and configuration as convenient as possible. Administra- tors of webMathematica sites do not need any knowledge of Java beyond its installation. The minimum technical components for webMathematica are: 1. A servlet container supporting both the Servlet Specification 2.4 (or higher) and JSP Specification 2.0 (or higher) 2. A JDK 1.2 (or higher); Java 2 Version 1.4 (or higher) is recommended There are many different combinations of hardware and operating systems that support these components. Most systems that run Mathematica will support webMathematica. At present Intel/Windows, Intel/Linux, Mac OS X, and Sun/Solaris are fully supported, http://www.wolfram.com/products/mathematica/platforms/. Setting up the servlet container is discussed in a later section. New Features of webMathematica webMathematica 3.0 Interactive Tools webMathematica 3.0 replicates the popular interactive Manipulate command for web pages. You can create web pages that contain various GUI features such as sliders, checkboxes, and popup menus, which control a calculation. All of this is done with the same concise syntax provided by Manipulate. webMathematica User Guide 9
  • 24. Expression Language and Custom Tags webMathematica 3.0 comes with support for a more concise way to call to Mathematica from the web page. It also contains a library with a number of useful tags; these tags provide a number of valuable tools, such as redirecting flow as the web page is generated. Queueing System webMathematica 3.0 allows long running or asynchronous computation jobs to be executed by a new queueing system. Support for Wolfram Workbench Wolfram Workbench provides a significant number of features that help to accelerate the devel- opment of webMathematica content. webMathematica 3.0 integrates with Wolfram Workbench so that Mathematica code can be debugged as it runs in the server. Web Services webMathematica 3.0 enables you to write REST and SOAP web services that use Mathematica. New Logging System A new, highly configurable logging system helps to track different types of errors and to identify problems so that they can be resolved easily. Improved Kernel Monitor The Kernel Monitor has been significantly improved. It has new code for monitoring memory usage, running time, concurrent requests, and Java objects; this helps to improve the reliability of the server. It allows starting and stopping of individual kernel pools and canceling individual computations. Queued jobs are monitored for progress and errors. Improved Kernel Interaction webMathematica 3.0 has improved the way that it interacts with the Mathematica kernel. It launches kernels as soon as the server starts and launches all kernels in parallel; this helps to improve the startup time for the server. It also has a number of new configuration tools, which limit the use of time and memory by the kernel; this helps to improve the reliability of the server. Kernels are automatically restarted in the background, so service remains uninterrupted. 10 webMathematica User Guide
  • 25. Incompatibilities This section lists any changes in webMathematica 3.0 that work differently from previous versions. Classic webMathematica Technology Dropped Support for the classic webMathematica technology has been dropped. This technology has been deprecated since webMathematica 1.0. Configuration A new configuration system based on a single XML file, MSPConfiguration.xml, is now sup- ported. The name of the security configuration file is now called SecurityConfiguration.m. webMathematica 2.3 The main new feature of webMathematica 2.3 is support for Mathematica 5.2. There are also a number of internal improvements. webMathematica 2.2 Support for Mathematica 5.1 webMathematica 2.2 comes with Mathematica 5.1. Mathematica 5.1 contains many important new features relevant to web operations, the most important being optimized binary I/O, graph and array plotting, and comprehensive string manipulation, matching, and searching capabilities. Database Connectivity DatabaseLink provides Mathematica with an industrial-strength, ready-made solution for inte- grating Mathematica with any standard SQL database. Integrated with Mathematica 5.1, it provides a convenient bridge between SQL databases and webMathematica. One particularly useful feature for webMathematica is that DatabaseLink contains the HSQL Database Engine (HSQLDB), a lightweight database. This means that if you do not already have a database or want to experiment with using one, you do not have to set one up; instead you can use HSQLDB. webMathematica User Guide 11
  • 26. Client Web Services The Mathematica Web Services Package allows Mathematica to call web services across the internet. Bundled with Mathematica 5.1, it provides a convenient way for webMathematica to use a web service. This is an important way to extend the functionality of a webMathematica website. webMathematica 2.1 The main new feature of webMathematica 2.1 is support for Mathematica 5.0. There are also a number of internal improvements and new examples. webMathematica 2.0 webMathematica 2.0 offered a number of new features and improvements. These are listed in this section. Support for Mathematica 4.2 webMathematica 2.0 comes with Mathematica 4.2. Mathematica 4.2 has many features that are very relevant to web operations, the most important being the XML support. There are many examples in webMathematica 2.0 that use XML features and XML applications such as MathML and SVG. Simplified Installation webMathematica 2.0 has a simplified installation process that only requires the installation of the webMathematica web application. There is a minimum of extra configuration that is required. Extended Documentation and Examples The documentation for webMathematica is now shipped in HTML format and accessible from the webMathematica front page. In addition many new examples have been added that demon- strate the new features. 12 webMathematica User Guide
  • 27. New Templating Mechanism Based on JSP Custom Tags A new HTML templating mechanism based on JSP custom tags has been added. This is now the preferred mechanism for using webMathematica. The mechanism is easier to understand, it allows the use of other JSP custom tag libraries, and it facilitates the integration of webMathe- matica into other server applications. MathML, SVG, and XML Support Support for the XML applications, MathML and SVG, is built into webMathematica 2.0. In addi- tion it can make use of the new XML processing tools that are available in Mathematica 4.2. Support for Catching Message and Print Output New functions are provided for catching the output of any Mathematica Message or Print state- ments. This can be useful for debugging or developing material. Support for HTTP File Upload New functions are provided to support HTTP file upload. This is an important way to submit information to a webMathematica web server. Support for HTTP Session Variables New functions are provided for saving material in an HTTP session stored in the server. This can be useful for saving results from one computation to another. HTML Formatting Functions New functions are provided for formatting results into HTML. Incompatibilities This section lists any changes in webMathematica 2.0 that work differently from 1.0. Location of Security Configuration File The mechanism for locating the security configuration file has changed from webMathematica 1.0. Now the security configuration file is named in the pool configuration file and is located in a central configuration directory in webMathematica/WEB-INF/conf. Previously the configuration file could be loaded from anywhere on the Mathematica path. webMathematica User Guide 13
  • 28. This change was made because loading the security configuration from a single central location is more secure. Since the default security system of webMathematica is very conservative, any sites that do not move their security files will run with a higher level of security than is expected. Security is discussed in a later section. Location of MSP.conf The default location MSP.conf has been moved into a central configuration directory in webMathematica/WEB-INF/conf. This leads to a great simplification in the setup of your server because it will look automatically in this location. 14 webMathematica User Guide
  • 29. Installation These installation instructions focus on setting up a servlet container and installing webMathe- matica. As explained previously, webMathematica is based on a standard Java technology called servlets; support for servlets is typically provided by a program called a servlet container. You must set up the servlet container before adding webMathematica. Installation can take the following steps: 1. Set up a servlet container. 2. Set up Mathematica using the CD-ROM from your distribution or from your download. 3. Install the webMathematica web application into your servlet container using the webMath- ematica Tools CD-ROM from your distribution or from your download. 4. For Unix, you may need to set up an X server. 5. Finally, you should test your webMathematica site. More information on installation of webMathematica can be obtained from Wolfram Research at http://www.wolfram.com/products/webmathematica/install. Setting Up a Servlet Container Before you start to install webMathematica, you need an installation of Java and a servlet container. If you already have these components, you may skip this section. There are many different servlet containers, but one that is particularly convenient is Tomcat, which can be obtained from http://jakarta.apache.org. Since Tomcat is a common way to run webMathematica, there is information on installing and setting it up on Unix, Windows, and Mac OS X. webMathematica has been tested with Tomcat as well as other containers listed at http://www.wolfram.com/products/webmathematica/technology/. If you have a particular interest or experience in running webMathematica with other containers, please contact Wolfram Research. However, if you do not have expertise with these other containers, using Apache Tomcat is recommended.
  • 30. When your servlet container is functioning correctly, as demonstrated by running its sample servlets, you are ready to install webMathematica. If your servlet container does not work, then webMathematica cannot work. The remaining steps in this section show you how to set up Java and Tomcat. If you are not using Tomcat, you should skip this section and study the documenta- tion for your servlet container. Setting Up Java It is recommended that you use a modern version of Java, such as Java SE 6. For Linux, Linux x64, Solaris SPARC, Solaris x64, Solaris x86, Windows, and Windows x64, this is available from the Sun Java site at http://java.sun.com/javase/downloads/index.jsp. The Sun Java site pro- vides detailed installation instructions for the different platforms. These are all relatively simple; typically, you download and execute an installer. If you are using Java SE 5 or higher, you can use either a JRE or JDK to run webMathematica. If you are using an older version of Java, you need the JDK. For Mac OS X, J2SE 5.0 is already installed. For other platforms, modern versions of Java are available from the appropriate vendors; a list of useful links is maintained in the Appendix: Java. You will also need to set the JAVA_HOME environment variable. This is described in the next sections for Unix and Windows. Unix The JAVA_HOME environment variable needs to be set for the environment in which Tomcat runs. An example of this, suitable for inclusion in .bashrc (this is the initialization file for the bash shell), is shown below. JAVA_HOME=/usr/local/jdk1.6.0_14 export JAVA_HOME For other shells, you should follow their standards for setting environment variables. Windows It is less important to set the JAVA_HOME variable for Windows because the Tomcat installer will find your installation of Java. However, it is still recommended. 16 webMathematica User Guide
  • 31. If you go to the Control Panel and open the System icon, you will see the System Properties window. From this, select the Advanced tab and then the Environment Variables button. Enter JAVA_HOME as a system variable, setting it to the top-level directory containing your JDK. For example, if your JDK is installed in C:Program FilesJavajdk1.6.0_14, this is the setting for JAVA_HOME. Mac OS X Mac OS X 10.5 ships with J2SE 5.0 and Java SE 6. Mac OS X 10.4 ships with J2SE 5.0. You may find that an updated version can be obtained via the software update mechanism (see also http://www.apple.com/java/). If you update your Java, you can ensure that you are always using the most recent version of the JDK by setting up the JAVA_HOME environment variable properly; this is shown below. JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Home export JAVA_HOME The default login shell for Mac OS X 10.5 is bash; hence, the above command needs to be placed in the appropriate shell initialization file, for example, .bashrc. Setting Up Tomcat This section describes setting up Tomcat on Unix, Windows, and Mac OS X. The main website for Tomcat is http://jakarta.apache.org; a list of useful links is maintained in Appendix: Tomcat. Unix Before you run Tomcat, you should first make sure you have set up Java on your machine; this was described in the previous section. Download information for current versions of Tomcat is given at http://www.wolfram.com/prod- ucts/webmathematica/resources/?tab=Updates. A variety of archive formats are available; one of these should be unpacked in some central location, for example /usr/local. You may also wish to change the name of the top-level directory. The actual location of Tomcat and the name of the top-level directory are entirely up to you. Sample shell instructions for these steps are shown below (note that tar xvfz archive will give you more information on what files are being extracted). Other versions of Tomcat are available from the Apache website, http://jakarta.apache.org. webMathematica User Guide 17
  • 32. [server1]$ cd /usr/local [server1]$ tar xfz jakarta-tomcat-5.5.27.tar.gz [server1]$ mv jakarta-tomcat-5.5.27 tomcat On some platforms, such as Solaris, the default tar command does not work to unpack the Tomcat archive as shown above. You need to obtain the GNU tar utility from http://www.gnu.org/directory/GNU/tar.html in order to use the options shown. It is often useful to create a low privilege account, such as tomcat, to run your servlet con- tainer. It is probably helpful if this account has a home directory so that your X server and Mathematica can store preferences information. If you create such an account, you may need to change ownership of the Tomcat layout so it can be run by this account. [server1]$ chown -R tomcat tomcat The main top-level directory of Tomcat contains some important directories, including: tomcat bin conf logs webapps The bin directory contains commands for running Tomcat; the conf directory contains site configuration files; the logs directory contains various log files; the webapps directory is where you will install webMathematica. You should be able to launch Tomcat immediately from the bin directory, making sure to be the tomcat user. [server1]$ su tomcat [server1]$ cd tomcat/bin [server1]$ ./startup.sh At this point, you should be able to connect to Tomcat via a URL such as http://localhost:8080. If this does not return the Tomcat front page, then something is wrong with your setup. If you look at the log files, it may help you track down your problem. Make sure that you have set your JAVA_HOME variable as described in the installing Java for Unix section. The bin directory also contains a script, shutdown.sh, used for shutting down Tomcat. Information on launching Tomcat automatically on Unix is given in a later section. 18 webMathematica User Guide
  • 33. Windows Before you run Tomcat, you should first make sure you have set up Java on your machine; this was described in the previous section. Download information for current versions of Tomcat is given at http://www.wolfram.com/ products/webmathematica/resources/?tab=Updates. A convenient way to install Tomcat is to download the self-installing executable. You should launch the installer and follow the instruc- tions it provides. If you choose not to use the self-installing executable, then unpack the binary distribution into a convenient location. Other versions of Tomcat are available from the Apache website, http://jakarta.apache.org. After installation is complete, you may wish to inspect the main top-level directory of Tomcat, which contains some important directories, including: Tomcat 5.5 bin conf logs webapps The bin directory contains commands for running Tomcat; the conf directory contains site configuration files; the logs directory contains various log files; the webapps directory is where you will install webMathematica. The installer adds a Start Menu Group from which you can run Tomcat. You should test it via a URL such as http://localhost:8080. If Tomcat does not run correctly, you should open a com- mand prompt window, change directories (”cd”) to the bin directory (in the main top-level directory of Tomcat) and try running the tomcat5.exe executable file (this can also be accom- plished by double-clicking on the file via the Windows Explorer). Previous versions of Tomcat used a startup.bat batch file. Starting and stopping Tomcat from the Start Menu is very convenient (this is also a new feature of Tomcat 4.1), but for running Tomcat as a production server under Windows you may wish to run it as a Windows Service. This is described in the section on launching Tomcat automatically on Windows. Mac OS X Of course, before you run Tomcat, you should first make sure you have set up Java on your machine as described in the previous section. webMathematica User Guide 19
  • 34. It is often useful to create a low privilege account, such as tomcat, to run your servlet con- tainer. You can accomplish this via the System Preferences panel. If you create such an account, you may need to change ownership of the Tomcat layout so it can be run by this account. [server1]$ sudo chown -R tomcat tomcat The main top-level directory of Tomcat contains some important directories, including: tomcat bin conf logs webapps The bin directory contains commands for running Tomcat; the conf directory contains site configuration files; the logs directory contains various log files; the webapps directory is where you will install webMathematica. You should be able to launch Tomcat immediately from the bin directory, making sure to be the tomcat user. [server1]$ su Tomcat [server1]$ cd Tomcat/bin [server1]$ ./startup.sh At this point, you should be able to connect to Tomcat via a URL such as http://localhost:8080. If this does not return the Tomcat front page, then something is wrong with your setup. If you look at the log files, it may help you track down your problem. Make sure that you have set your JAVA_HOME variable as described in the installing Java for Mac OS X section. The bin directory also contains a script, shutdown.sh, used for shutting down Tomcat. Please also note that for webMathematica to fully function, you need to log on via the Mac OS X console. This is necessary since the Mathematica front end makes use of the Mac OS X window- ing environment. Download information for current versions of Tomcat is given at http://www.wolfram.com/ products/webmathematica/resources/?tab=Updates. A variety of archive formats are available; one of these should be unpacked in some central location, for example, /Library. You may also wish to change the name of the top-level Tomcat directory. The actual location of Tomcat and the name of the top-level directory are entirely up to you. /Library is useful because it can be viewed via the Finder. Other versions of Tomcat are available from the Apache website, http://jakarta.apache.org. Note that the default OS X tar command does not work to unpack the Tomcat archive as shown below. You would need to use the GNU tar utility (gnutar), which normally resides in 20 webMathematica User Guide
  • 35. Note that the default OS X tar command does not work to unpack the Tomcat archive as shown below. You would need to use the GNU tar utility (gnutar), which normally resides in /usr/bin/, to use the options shown. You could also use Stuffit Expander (Version 7.0.1 and later), which uncompresses *.tar.gz archives. Sample shell instructions for these steps are shown below (note that tar xvfz archive will give you more information on what files are being extracted). These instructions assume that you are using the Terminal application found in Applications-> Utilities-> Terminal. [server1]$ cd /Library [server1]$ sudo /usr/bin/gnutar xfz jakarta-tomcat-5.5.27.tar.gz [server1]$ sudo mv jakarta-tomcat-5.5.27 tomcat Installing and Configuring Mathematica Install the version of Mathematica appropriate for the platform you wish to use for your web server. You should choose a single-machine installation. When you have finished, you should be able to run Mathematica interactively to validate your installation. If Mathematica cannot run, then webMathematica cannot run. If you already have an installation of Mathematica on your server, you do not need to install Mathematica again, but can proceed with the remaining installation steps. With an existing installation of Mathematica, you may place your webMathematica license information into a different location, as described in the following section. Placing the license information in a different location will ensure that an interactive usage of Mathematica on your server does not interfere with the operation of your webMathematica site. One possible alternative directory is the webMathematica/WEB-INF/conf directory as demonstrated in the section on installing webMathematica into Tomcat. Note that if you install the license in a special file, you will have to set the -pwfile option when you run Mathematica outside of webMathematica. Installing the webMathematica Web Application This section describes how to install webMathematica components into your servlet container. For most servlet containers, this involves deploying the webMathematica web application found in archived form on the webMathematica Tools CD-ROM or from your download. Separate webMathematica User Guide 21
  • 36. installation instructions are given for some different servlet containers. A web application is a collection of HTML and other web components, which are placed in a specific directory struc- ture. Any servlet container that supports web applications will be able to use these files in a standard way. Web applications support a special type of archive called a WAR archive, which is supported by some servlet containers. webMathematica provides a WAR archive of the webMath- ematica archive. Tomcat This section describes the deployment of the webMathematica webapp in Tomcat. There are two steps: unpacking the webMathematica archive and configuring the MSPConfiguration.xml file. First, choose one of the webMathematica archives from the Tools CD-ROM; for example, webÖ Mathematica.zip or webMathematica.tar.gz. Unpack the archive into the webMathematica directory located in the Tomcat webapps directory. This is usually found in the top-level direc- tory of Tomcat. You have now created a web application called webMathematica. Some of the contents of the top directory of Tomcat, along with the location of the webapps directory and webMathematica web application, are shown below. tomcat conf bin logs lib webapps webMathematica Second, configure the file MSPConfiguration.xml, located in the WEB-INF/conf directory. This file holds various site-specific parameters and may need modification for your site. The settings that can be placed into MSPConfiguration.xml are described in the section Site Configuration. The most important setting is KernelExecutable, the location of the Mathematica kernel. The MSPConfiguration.xml that ships with webMathematica contains settings suitable for a default installation of Mathematica for Windows, Unix, Linux, and Mac OS X. However, if you install Mathematica into a nondefault location, you will need to modify this file. For example, if you installed Mathematica into E:Mathematica, make the following setting of KernelExecutable in MSPConfiguration.xml. 22 webMathematica User Guide
  • 37. <KernelExecutable> E:MathematicaMathKernel.exe </KernelExecutable> Another reason to modify MSPConfiguration.xml is to store your webMathematica license in its own password file, for example, webMathematica/WEB-INF/conf/mathpass. It would then be necessary to modify KernelLaunchFlags in MSPConfiguration.xml to ensure that Mathematica uses this location. The following shows how this could be done for a typical Windows installation. <KernelLaunchFlags> -pwfile c:/Program Files/tomcat/webapps/webMathematica/WEB- INF/conf/mathpass </KernelLaunchFlags> A typical setting for MSPConfiguration.xml to use a special mathpass file under Unix is shown below. <KernelLaunchFlags> -pwfile /usr/local/tomcat/webapps/webMathematica/WEF-INF/conf/mathpass </KernelLaunchFlags> Under Unix, you may need to add a FrontEndLaunchFlags parameter so the front end can run properly. In the following example, the front end will be launched to use DISPLAY 1 with fixed geometry and in server mode. For more information on running the front end under Unix, see the documentation section Configuring for the X Window System. <FrontEndLaunchFlags> -display :1 -nogui -geometry 1000x500+10+10 </FrontEndLaunchFlags> Other Servlet Engines If you are unfamiliar with servlets, then it is recommended that you use Apache Tomcat. You should only use another servlet engine if you are already experienced with it. If you have some other servlet engine, follow its instructions for installing a web application, which may be supported by some special tools. After installing the web application, you will need to modify the MSPConfiguration.xml file as described in the section on installing under Tomcat. It may also be necessary to make various modifications to MSPConfiguration.xml, such as changing the JLinkNativeLibraryDirectory setting. webMathematica User Guide 23
  • 38. Configuring for the X Window System (Unix only) There are special problems associated with running the Mathematica front end under X from within a web server. This is because, typically, the web server is run as a special account, such as tomcat. This means that when webMathematica runs the front end, it is running as this account. For the front end to operate, it must connect to an X server; this could be achieved by logging into the console of the web server machine with this special account running an X server. There are a few problems with this approach: first, you may not want to leave the machine with an open login on the console; secondly, every time the front end does something, a window will appear on the screen, which may be distracting for someone using the machine. If a different user logs into the console and runs an X server, the front end (which is run by the special webMathematica account) will not be able to connect to this server at all under the standard authentication system of X. While it is possible to configure the server to allow these connections, it is not satisfactory because webMathematica will be displaying windows on the screen every time it does something with the front end. This topic is discussed in greater length in a later section. These problems are solved by running a virtual X server, such as Xvnc, as described in the following section. Running a virtual server prevents the windows created by the Mathematica front end from displaying on the screen console of the computer running Mathematica. Configuring Xvnc and webMathematica Xvnc is the Unix VNC server. It provides a virtual X server that can be used by applications, such as the Mathematica front end, when it is running for webMathematica. It also provides a VNC server so that a VNC viewer can connect to view and control any applications running in the server. This can be useful since it can help track down problems in running the front end. Xvnc comes with a number of Unix distributions. It can also be ovtained from RealVNC, http://www.realvnc.com/, and TightVNC, http://www.tightvnc.com. 24 webMathematica User Guide
  • 39. Install Xvnc Installation of Xvnc is quite straightforward; you unpack the archive and then copy the relevant files into some local bin directory, for example, /usr/local/bin. (Note that some modern Linux distributions already have Xvnc installed.) Copying of the Xvnc binaries is shown below. [server1]$ cp vncviewer vncserver vncpasswd vncconnect Xvnc /usr/local/bin Launch Xvnc Launching Xvnc is also quite straightforward; this should be done as the user that will be run- ning webMathematica, for example, the user tomcat. The first time Xvnc is launched, it asks for a password. In the example below, the server is launched as display :1. [server1]$ su tomcat [server1]$ vncserver You will require a password to access your desktops. Password: Verify: New'X' desktop is server1:1 Creating default startup script /home/tomcat/.vnc/xstartup Starting applications specified in /home/tomcat/.vnc/xstartup Log file is /home/tomcat/.vnc/server1.wolfram.com:1.log Test Xvnc Once it is launched, it is a good idea to test the server by running an application to use it, for example, the Mathematica front end. This is shown below. [server1]$ su tomcat [server1]$ mathematica -display :1 Of course, when this is done, you do not see an actual window on your screen; this is because it is a virtual server. To see the window from the Mathematica front end, you can run the vncviewer. This can be done as shown below. [server1]$ vncviewer :1 This should show you a screen with the front end window visible. You should be able to type into the front end and see it working. At any time webMathematica is running, you can view the desktop with vncviewer. webMathematica User Guide 25
  • 40. Configure webMathematica The final step is to modify your MSPConfiguration.xml file to instruct the front end to use this server. The setting of FrontEndLaunchFlags is described in the Appendix: Site Configuration. Here is a sample setting that connects to the X server on display :1. <FrontEndLaunchFlags> -display :1 -nogui -geometry 1000x500+10+10 </FrontEndLaunchFlags> Now your Unix server should be ready to run webMathematica. If you find that the front end does not launch correctly, it may help to add the name of the server in the configuration file. An example is shown below; here, myserver is the name of the machine on which webMathematica and Xvnc are running. <FrontEndLaunchFlags> -display myserver:1 -nogui -geometry 1000x500+10+10 </FrontEndLaunchFlags> Other X Related Issues The following section describes a number of further issues that relate to using webMathematica in conjunction with an X server. If you have set up an Xvnc server as described above it should not be necessary to study these. Connecting to the X Server When the Mathematica front end runs, it must connect to an X server. If the X server is being run by a different user than the user running the front end, the X server will reject the connec- tion, as shown below. [root]# su tomcat bash$ mathematica Xlib:connection to ":0.0" refused by server Xlib:Client is not authorized to connect to Server xset:unable to open display ":0.0" Xlib:connection to ":0.0" refused by server Xlib:Client is not authorized to connect to Server xset:unable to open display ":0.0" Xlib:connection to ":0.0" refused by server 26 webMathematica User Guide
  • 41. Xlib:Client is not authorized to connect to Server xset:unable to open display ":0.0" Xlib:connection to ":0.0" refused by server Xlib:Client is not authorized to connect to Server XMathematica:can't open display:0.0,exiting... bash$ One way to avoid this problem is to allow all connections from the local machine. [root]# xhost +localhost localhost being added to access control list [root]# su tomcat bash$ mathematica bash$ This is not a good technique since there is a potential for security problems. These are probably limited since it is only connections from the same machine that are allowed. Another problem is that every time the front end is used, a window will be drawn on the screen, which may be annoying to a user of the system. A more satisfactory alternative is to run a virtual X server, such as Xvnc. Xvfb Xvfb is a virtual frame buffer server described at http://www.xfree86.org/4.3.0/Xvfb.1.html. It can be used as an alternative to Xvnc, but typically we have found Xvnc to be easier to use and provide more functionality. For Linux, you can download an RPM archive from http://www.redhat.com. After installation, you can launch it as follows (you will probably run this as root). su tomcat -c "/usr/X11R6/bin/Xvfb :1 -fp unix/:7100,/usr/local/Wolfram/Mathematica/4.2/SystemFiles/Fonts/Type1, /usr/local/Wolfram/Mathematica/4.2/SystemFiles/Fonts/BDF -screen 0 800x600x24 " & This command launches Xvfb referencing a font server on port 7100 and adding directories that contain the Mathematica fonts. Note that if you install Mathematica in some alternative loca- tion, you should modify these directories. Under some Mathematica installations the location of Mathematica fonts is added to the font server configuration; in this case the Mathematica fonts do not need to be referenced when Xvfb is launched. Xvfb could then be launched as shown here. su tomcat -c "/usr/X11R6/bin/Xvfb :1 -fp unix/:7100" & webMathematica User Guide 27
  • 42. In these examples, Xvfb expects to use port 7100 on the local machine for the font server. The actual setting may need to be modified if some alternative configuration of font server is used. For example, under Redhat 6 the font server uses a local Unix socket and Xvfb should be launched as follows. su tomcat -c "/usr/X11R6/bin/Xvfb :1 -fp unix/:-1,/usr/local/Wolfram/Mathematica/4.2/SystemFiles/Fonts/Type1, /usr/local/Wolfram/Mathematica/4.2/SystemFiles/Fonts/BDF -screen 0 800x600x24 " & If you are not running a font server, you may need to launch Xvfb with no font server refer- ence. In this case, it may be necessary to copy the Mathematica fonts into the X distribution layout as described in the section below on manual font installation. su tomcat -c "/usr/X11R6/bin/Xvfb :1 -screen 0 800x600x24 "& Once you have launched the virtual frame buffer server, you can test that it is running. You will probably run this as root. [root]# su tomcat bash$ mathematica -display :1 Of course, one problem with confirming that the front end is running correctly with this server is that you cannot see it on the screen! This makes it hard to see a dialog box indicating an error. One way to see what the front end is displaying is to inspect a dump of the server with xwd and xwud, which you can do with the following. xwd -display :1 -root | xwud This will show what the front end is displaying. For example, if you see a message about not finding the password, you may need to add a pwfile command-line option. When you are running the virtual frame buffer X server, you will need to modify your MSPConfigÖ uration.xml file to instruct the front end to use this server. The setting of FrontEndLaunchÖ Flags is described in Appendix: Configuration. Here is a sample setting. <FrontEndLaunchFlags> -display :1 -nogui -geometry 1000x500+10+10 </FrontEndLaunchFlags> On some systems, such as Sun/Solaris, the X server has problems when being launched by the user tomcat since the permissions to the /tmp/.X11 directories have been restricted for secu- 28 webMathematica User Guide
  • 43. rity reasons. The problem manifests itself with a message that says the system cannot establish any listening sockets. One solution would be to modify the directories so that tomcat can write to them. For more detail, see http://www.faqs.org/faqs/Solaris2/FAQ/. Manual Font Installation The front end cannot run without access to the Mathematica fonts. If you notice from the out- put of the X server with vncviewer or xwd that the front end is displaying a dialog box indicat- ing that it cannot find its fonts, you will have to take some further steps to locate the fonts. One solution that is simple but drastic is to copy the Mathematica fonts into your X distribution. cd /usr/X11R6/lib/X11/fonts cp -r 75dpi 75dpi.orig cd 75dpi cp /usr/local/Wolfram/Mathematica/5.1/SystemFiles/Fonts/X/*.bdf . mkfontdir This is really a poor solution to be avoided if possible. One deficiency is that if you update your copy of Mathematica, you will have to remember to copy the new fonts. The proper solution is to launch Xvfb so it either uses a font server or a font path setting, as described above. Remem- ber that this is not a problem when working under Windows. Upgrading from webMathematica 2.3 This section discusses some of the issues that will concern you if you already have webMathe- matica. If you are using an older servlet container, this may be a good opportunity to upgrade to something more recent. If you are going to upgrade your servlet container, you could follow the instructions at the beginning of this chapter as though this was a fresh installation of webMathematica. Install Mathematica webMathematica comes with a copy of Mathematica and this should be installed as discussed in the section on Installing and Configuring Mathematica. If you have installed any applications into your copy of Mathematica, you will need to make them available to Mathematica. This is discussed in the section Installing Packages. Note that you should not copy the MSP application to Mathematica. webMathematica User Guide 29