Op 27-okt-2005, om 6:55 heeft David Avendasora het volgende
geschreven:
(please read entire message as there are two possible issues)
Thanks for the reply. I don't have a choice for platform of
deployment. I am a bit confused: according to the settings I got
from the XCode assistant on starting a project for a single war,
the settings that came out of that were:
SERVLET_COPY_JARS = YES
SERVLET_SINGLE_DIR_DEPLOY = NO
SERVLET_TRUE_WAR = YES
According to ttp://www.darcynorman.net the settings should be:
The options to get a true war would be:
SERVLET_COPY_JARS = YES
SERVLET_SINGLE_DIR_DEPLOY = YES
SERVLET_TRUE_WAR = YES
I tried the http://www.darcynorman.net/tag/webobjects thing, but
that did not work out. I would end up with a full directory instead
of a war. I jarred the full directory and used that. No luck.
So I changed the option SERVLET_SINGLE_DIR_DEPLOY to NO, that would
give me a single war.
Then I uploaded the stuff. Still no succes. The only platform I
seem to have success on is OS X 10.3.9.
Tomcat 4.1.39/4.1.30/5.5.11 with java 1.4.2 or 1.5.5 are all not
working, still the same error message.
I am beginning to wonder if the classes in the lib folder in the
war are read, or that there might be an error in the web.xml file.
Especially the WOClasspath seems a bit strange to me, compared to
the contents of the war.
These are the contents of the war:
======================================================================
META-INF/
META-INF/MANIFEST.MF
WEB-INF/
WEB-INF/classes/
WEB-INF/jboss-web.xml
WEB-INF/lib/
WEB-INF/lib/activation.jar
WEB-INF/lib/avalon-framework-4.1.2.jar
WEB-INF/lib/axis-ant.jar
WEB-INF/lib/axis.jar
WEB-INF/lib/clutil.jar
WEB-INF/lib/commons-discovery.jar
WEB-INF/lib/commons-logging.jar
WEB-INF/lib/ejb-1.0.jar
WEB-INF/lib/jaas_1.0.jar
WEB-INF/lib/JavaEOAccess.jar
WEB-INF/lib/JavaEOControl.jar
WEB-INF/lib/JavaFoundation.jar
WEB-INF/lib/JavaJDBCAdaptor.jar
WEB-INF/lib/JavaWebObjects.jar
WEB-INF/lib/JavaWebServicesSupport.jar
WEB-INF/lib/JavaWOExtensions.jar
WEB-INF/lib/JavaWOJSPServlet.jar
WEB-INF/lib/JavaWOJSPServlet_client.jar
WEB-INF/lib/JavaXML.jar
WEB-INF/lib/jaxrpc.jar
WEB-INF/lib/jca_1.0.jar
WEB-INF/lib/log4j-1.2.4.jar
WEB-INF/lib/log4j-1.2.8.jar
WEB-INF/lib/logkit-1.0.1.jar
WEB-INF/lib/saaj.jar
WEB-INF/lib/theaterres.jar
WEB-INF/lib/wsdl4j.jar
WEB-INF/LICENSE
WEB-INF/tlds/
WEB-INF/tlds/WOtaglib_1_0.tld
WEB-INF/web.xml
======================================================================
This is the content of the web.xml file:
======================================================================
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<!-- This web.xml file by itself will allow you to run the
corresponding
WebObjects application in a Servlet container. If you would
like to
merge the WebObjects application with your existing JSP/Servlet
application, you have to merge this web.xml with your existing
web.xml.
NOTE: This file is normally included as the template file
'web.xml.template'.
During the build process, the placeholders for WOROOT,
LOCALROOT, WOAINSTALLROOT,
WOAppMode, WOClassPath, WOApplicationClass and WOtaglib will
be replaced
with the appropriate values. Other parts of the template file
may be
customized as required.
NOTE: WEBINFROOT is added to the WOClassPath at build time,
but the replacement
value is replaced at runtime to be the path to the WEB-INF
directory.
-->
<web-app>
<context-param>
<param-name>WOJarBundle</param-name>
<param-value>YES</param-value>
<description>Whether this app is a "true" WAR, rather than a
"stub" WAR or SSDD
Note that WOROOT, LOCALROOT, WOAINSTALLROOT, WOClassPath are
ignored if this is true
However, if this is true, WOMainBundle must be set to the
main bundle name</description>
</context-param>
<context-param>
<param-name>WOMainBundle</param-name>
<param-value>theaterres</param-value>
<description>Sets the name of the main bundle. Only used if
WOJarBundle is true</description>
</context-param>
<context-param>
<param-name>WOROOT</param-name>
<param-value>/System</param-value>
<description>Indicates the root where WebObjects frameworks are
installed. In Mac OS X,
for example, WO frameworks are located in the "/System/
Library/Frameworks"
directory; keeping in tradition, WOROOT is set to "/System".
On Windows,
it could be "c:\Apple", on Solaris, it could be "/opt/Apple".
If "-DWOROOT=/path/to/somewhere" is defined (in the
container startup script,
for example), the value indicated here is ignored.</
description>
</context-param>
<context-param>
<param-name>LOCALROOT</param-name>
<param-value>/</param-value>
<description>Indicates the root where local frameworks are
installed. In Mac OS X,
for example, these frameworks are located in the "/Library/
Frameworks"
directory; keeping in tradition, LOCALROOT is set to "/". On
Windows,
it could be "c:\Apple\Local", on Solaris, it could be "/opt/
Apple/Local".
If "-DLOCALROOT=/path/to/somewhere" is defined (in the
container startup script,
for example), the value indicated here is ignored.</
description>
</context-param>
<context-param>
<param-name>WOAINSTALLROOT</param-name>
<param-value>/tmp/theaterres.dst//Library/WebObjects/
Applications</param-value>
<description>Indicates the root where WebObjects applications
are installed. In Mac OS X
deployment, for example, WO applications are usually
deployed in the
"/Library/WebObjects/Applications" directory and
WOAINSTALLROOT is set to
"/Library/WebObjects/Applications". If "-DWOAINSTALLROOT=/
path/to/somewhere"
is defined (in the container startup script, for example),
the value
indicated here is ignored.</description>
</context-param>
<context-param>
<param-name>WOAppMode</param-name>
<param-value>Development</param-value>
<description>Indicates if application is development or
deployment mode. In development
mode, images are vended by the application directly from
frameworks. In
deployment mode, images are vended by the webserver.</
description>
</context-param>
<context-param>
<param-name>WOClasspath</param-name>
<param-value>WOAINSTALLROOT/theaterres.woa/Contents/Resources/
Java/theaterres.jar
WOROOT/Library/Frameworks/JavaFoundation.framework/Resources/
Java/javafoundation.jar
WOROOT/Library/Frameworks/JavaEOControl.framework/Resources/
Java/javaeocontrol.jar
WOROOT/Library/Frameworks/JavaEOAccess.framework/Resources/Java/
javaeoaccess.jar
WOROOT/Library/Frameworks/JavaWebObjects.framework/Resources/
Java/javawebobjects.jar
WOROOT/Library/Frameworks/JavaWOExtensions.framework/Resources/
Java/JavaWOExtensions.jar
WOROOT/Library/Frameworks/JavaXML.framework/Resources/Java/
javaxml.jar
WOROOT/Library/Frameworks/JavaJDBCAdaptor.framework/Resources/
Java/javajdbcadaptor.jar
WOROOT/Library/Frameworks/JavaWOJSPServlet.framework/Resources/
Java/javawojspservlet.jar
WOROOT/Library/Frameworks/JavaWebServicesSupport.framework/
Resources/Java/javawebservicessupport.jar
</param-value>
<description>This parameter points to the WebObjects
directories required for
this application. If a directory contains resources, they
will be
picked up; as well, if a directory contains JARs, they will be
picked up. WOROOT, LOCALROOT or WOAINSTALLROOT placeholders
here
will be replaced at runtime with the appropriate values
(Java System
Properties if defined, the context-param values located above
otherwise). WEBINFROOT placeholders will be replaced at runtime
with the full path to the WEB-INF directory.</description>
</context-param>
<context-param>
<param-name>WOApplicationClass</param-name>
<param-value>Application</param-value>
<description>Class name of the WOApplication subclass that
defines the
WebObjects application.</description>
</context-param>
<!-- The WebObjects Servlet that interfaces between the Servlet
container
world and the WebObjects world. -->
<servlet>
<servlet-name>WOServletAdaptor</servlet-name>
<servlet-class>com.webobjects.jspservlet.WOServletAdaptor</
servlet-class>
<load-on-startup>5</load-on-startup>
</servlet>
<!-- URLs starting with 'WebObjects' use the WebObjects Servlet
adaptor. -->
<servlet-mapping>
<servlet-name>WOServletAdaptor</servlet-name>
<url-pattern>/WebObjects/*</url-pattern>
</servlet-mapping>
<!-- Session timeout in minutes. This is for both JSP/Servlet and
WOSessions. Note this overrides the WebObjects session timeout.
Uncomment the session-config block to use.
-->
<!--
<session-config>
<session-timeout>30</session-timeout>
</session-config>
-->
<!-- This tag library allows the use of WOComponents within JSPs.
-->
<taglib>
<taglib-uri>/WOtaglib</taglib-uri>
<taglib-location>/WEB-INF/tlds/WOtaglib_1_0.tld</taglib-location>
</taglib>
<!-- commented as per tomcat install instructions
<resource-ref>
<description>The data source to be used by EOF. If there are
multiple data sources,
then the definition below must be used to
configure which JDBC URL (Model) should
use which data source. If EOF should use a JDBC
driver directly, this section must be commented out</description>
<res-ref-name>jdbc/DefaultDataSource</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
-->
<!-- **** ***** *****
Debug logging and events Environment Entries
**** ***** *****
-->
<env-entry>
<description>Enable certain debug groups. See the NSLog javadoc
for details.</description>
<env-entry-name>wo/NSDebugGroups</env-entry-name>
<env-entry-value>NSLog.DebugGroupWebObjects</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
<env-entry>
<description>Set the detail logging level: DebugLevelOff,
DebugLevelCritical, DebugLevelInformational, DebugLevelDetailed</
description>
<env-entry-name>wo/NSDebugLevel</env-entry-name>
<env-entry-value>NSLog.DebugLevelInformational</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
<env-entry>
<description>Enables logging of rule firing</description>
<env-entry-name>wo/D2WTraceRuleFiringEnabled </env-entry-name>
<env-entry-value>false</env-entry-value>
<env-entry-type>java.lang.Boolean</env-entry-type>
</env-entry>
<env-entry>
<description>Enables logging of rule modifications</description>
<env-entry-name>wo/D2WTraceRuleModificationsEnabled</env-entry-
name>
<env-entry-value>false</env-entry-value>
<env-entry-type>java.lang.Boolean</env-entry-type>
</env-entry>
<env-entry>
<description>Enables logging of SQL sent by an application's
EOAdapter to a data source</description>
<env-entry-name>wo/EOAdaptorDebugEnabled</env-entry-name>
<env-entry-value>false</env-entry-value>
<env-entry-type>java.lang.Boolean</env-entry-type>
</env-entry>
<!--
<env-entry>
<description>String defining the password that allows access to
event logging data</description>
<env-entry-name>wo/EOEventLoggingPassword</env-entry-name>
<env-entry-value></env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
-->
<env-entry>
<description>Sets the limit of the event logging stack</
description>
<env-entry-name>wo/EOEventLoggingLimit</env-entry-name>
<env-entry-value>200000</env-entry-value>
<env-entry-type>java.lang.Long</env-entry-type>
</env-entry>
<env-entry>
<description>Enables logging if the event log limit is
exceeded</description>
<env-entry-name>wo/EOEventLoggingOverflowDisplay</env-entry-name>
<env-entry-value>false</env-entry-value>
<env-entry-type>java.lang.Boolean</env-entry-type>
</env-entry>
<!--
<env-entry>
<description>String defining the password that allows access to
the application's statistics</description>
<env-entry-name>wo/WOStatisticsPassword</env-entry-name>
<env-entry-value></env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
-->
<env-entry>
<description>true or false to enable or disable event logging
in the application server</description>
<env-entry-name>wo/WOEventLoggingEnabled</env-entry-name>
<env-entry-value>false</env-entry-value>
<env-entry-type>java.lang.Boolean</env-entry-type>
</env-entry>
<env-entry>
<description>Use Log4J logging</description>
<env-entry-name>wo/NSUseLog4jLogging</env-entry-name>
<env-entry-value>true</env-entry-value>
<env-entry-type>java.lang.Boolean</env-entry-type>
</env-entry>
<env-entry>
<description>Log4J logging string. Customize this in order to
distinguish log messages coming from multiple applications, or to
set up specific log4j appending configurations</description>
<env-entry-name>wo/NSLog4jLoggerName</env-entry-name>
<env-entry-value>theaterres</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
<!-- **** ***** *****
Development vs. Deployment Environment Entries
**** ***** *****
-->
<env-entry>
<description>Enables component caching (not page caching).
Should be true in deployment, false for development</description>
<env-entry-name>wo/WOCachingEnabled</env-entry-name>
<env-entry-value>true</env-entry-value>
<env-entry-type>java.lang.Boolean</env-entry-type>
</env-entry>
<env-entry>
<description>Enables rapid turnaround mode. Should be false in
deployment, true in development</description>
<env-entry-name>wo/WOAllowRapidTurnaround</env-entry-name>
<env-entry-value>false</env-entry-value>
<env-entry-type>java.lang.Boolean</env-entry-type>
</env-entry>
<env-entry>
<description>Enables refreshing of an application's resource
list every time a resource cannot be found. This flag applies only
to applications in rapid turnaround mode. When this flag is true,
you can make changes to an application's resources (such as images)
and immediately see the results of those changes in a running
application. Doing so incurs overhead, so you may want to set this
flag to false to improve page-loading speed during development.
Should be false in deployment, true in development</description>
<env-entry-name>wo/WOMissingResourceSearchEnabled</env-entry-name>
<env-entry-value>false</env-entry-value>
<env-entry-type>java.lang.Boolean</env-entry-type>
</env-entry>
<env-entry>
<description>Enables the generation of WOExceptionPages for
direct action requests. Should be false in deployment, true in
development</description>
<env-entry-name>wo/WODisplayExceptionPages</env-entry-name>
<env-entry-value>false</env-entry-value>
<env-entry-type>java.lang.Boolean</env-entry-type>
</env-entry>
<env-entry>
<description>true or false to determine whether or not HTML
comments are included in the application's responses. Should be
false in deployment, true in development</description>
<env-entry-name>wo/WOIncludeCommentsInResponse</env-entry-name>
<env-entry-value>false</env-entry-value>
<env-entry-type>java.lang.Boolean</env-entry-type>
</env-entry>
<env-entry>
<description>Enables the Direct to Java Client Assistant in
Direct to Java Client applications</description>
<env-entry-name>wo/EOAssistantEnabled</env-entry-name>
<env-entry-value>false</env-entry-value>
<env-entry-type>java.lang.Boolean</env-entry-type>
</env-entry>
<env-entry>
<description>Enables the Web Services Assistant in a Direct to
Web Services application</description>
<env-entry-name>wo/WSAssistantEnabled</env-entry-name>
<env-entry-value>false</env-entry-value>
<env-entry-type>java.lang.Boolean</env-entry-type>
</env-entry>
<!-- **** ***** *****
General Environment Entries
**** ***** *****
-->
<env-entry>
<description>Enables concurrent processing of requests</
description>
<env-entry-name>wo/WOAllowsConcurrentRequestHandling</env-entry-
name>
<env-entry-value>false</env-entry-value>
<env-entry-type>java.lang.Boolean</env-entry-type>
</env-entry>
<env-entry>
<description>true or false to control what happens when a
malformed cookie is received in a request</description>
<env-entry-name>wo/WOAcceptMalformedCookies</env-entry-name>
<env-entry-value>false</env-entry-value>
<env-entry-type>java.lang.Boolean</env-entry-type>
</env-entry>
<env-entry>
<description>Integer representing the default undo stack limit
for the application's sessions</description>
<env-entry-name>wo/WODefaultUndoStackLimit</env-entry-name>
<env-entry-value>10</env-entry-value>
<env-entry-type>java.lang.Integer</env-entry-type>
</env-entry>
<env-entry>
<description>true or false to require or not require bind
variables</description>
<env-entry-name>wo/EOAdaptorUseBindVariables</env-entry-name>
<env-entry-value>false</env-entry-value>
<env-entry-type>java.lang.Boolean</env-entry-type>
</env-entry>
<!--
<env-entry>
<description>String representing the currency symbol to use in
the application</description>
<env-entry-name>wo/NSCurrencySymbol</env-entry-name>
<env-entry-value>$</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
-->
<env-entry>
<description>true or false to control whether the XML parser
performs validation while deserializing an XML document</description>
<env-entry-name>wo/NSXMLValidation</env-entry-name>
<env-entry-value>false</env-entry-value>
<env-entry-type>java.lang.Boolean</env-entry-type>
</env-entry>
<env-entry>
<description>String representing the path to where the
application may be found under the document root, not including the
application name</description>
<env-entry-name>wo/WOApplicationBaseURL</env-entry-name>
<env-entry-value>/WebObjects</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
<!--
<env-entry>
<description>String representing the name of the application
executable</description>
<env-entry-name>wo/WOApplicationName</env-entry-name>
<env-entry-value>aName</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
-->
<!--
<env-entry>
<description>String representing the URL for the Web server
including the path to the WebObjects CGI adaptor. This is
controlled by the WebServerConfig .plist in the JavaWebObjects
framework</description>
<env-entry-name>wo/WOCGIAdaptorURL</env-entry-name>
<env-entry-value>http://localhost/cgi-bin/WebObjects</env-entry-
value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
-->
<env-entry>
<description>Enables client-side page caching</description>
<env-entry-name>wo/WOAllowsCacheControlHeader</env-entry-name>
<env-entry-value>true</env-entry-value>
<env-entry-type>java.lang.Boolean</env-entry-type>
</env-entry>
<env-entry>
<description>String representing the URLs of the frameworks to
use when generating URLs for Web Server resources</description>
<env-entry-name>wo/WOFrameworksBaseURL</env-entry-name>
<env-entry-value>/WebObjects/Frameworks</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
<env-entry>
<description>true or false to allow the retrieval of WSDL files
in a Web services application</description>
<env-entry-name>wo/WOGenerateWSDL</env-entry-name>
<env-entry-value>true</env-entry-value>
<env-entry-type>java.lang.Boolean</env-entry-type>
</env-entry>
<env-entry>
<description>String representing the name of the mail server
used to send messages created by WOMailDelivery</description>
<env-entry-name>wo/WOSMTPHost</env-entry-name>
<env-entry-value>smtp</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
</web-app>
======================================================================
Is there anybody with a working war on a non-10.3.9 system that
could have a look at their contents?
Firstly, it could be the license but when I had problems with it I
would get a compiler error stating that the license was not valid.
If it is indeed the license then google for "webobjects servlet
5.3 5.2 deployment" and pick the first non-apple result. It will
explain how to get it working in this situation. It has worked for
me. I've gotten it to work with both Tomcat 4.0.x and 5.5.x
running on Windows 2000 Server.
With this said, Apple SPECIFICALLY recommends against deploying to
a different version of the deployment tools than what the
application is developed on which is what you are doing unless you
have the 5.3 deployment tools (only available with OS X Server)
installed in addition to the developer tools (available with OS X
Client & Xcode 2).
With that said, I have not yet had any problems, but I have only
tested a couple small, Direct-To-Java applications so Your Milage
May Vary.
Secondly, I believe that I have also seen the "Servlet
WOServletAdaptor is currently unavailable" error and it was caused
by not all the frameworks being present in the deployed "WEB-INF/
Library/Frameworks" directory. I'm not sure which are missing.
There are thousands within several sub-directories so I copied
from a working deployment. I'm not sure why my explicit command-
line build instructions of:
"xcodebuild -target Appname -configuration deployment
SERVLET_COPY_JARS=YES SERVLET_SINGLE_DIR_DEPLOY=YES
SERVLET_SINGLE_DIR_DEPLOY_LICENSE=B-123-ABC-456-DEF-789-GHI-012-
JKL-345" (fake deployment key)
is NOT copying all the frameworks. Maybe I'm missing something??
I am only in the initial development stages deploying for initial
testing only. At the time we are ready to deploy for in-depth
testing, I will purchase a 10-client OS X Server license to get
the proper 5.3 deployment tools.
(Interesting how WebObjects 5.3 still costs about the same as 5.2,
but you get free copies of OS X Client and OS X Server (10 client)
along with it. At least that's how I look at it...)
Dave
On Oct 27, 2005, at 4:34 AM, Chuck Hill wrote:
I can't advise you on Tomcat, but I'm pretty sure that 5.3 won't
run with a 5.2 license.
Chuck
On Oct 26, 2005, at 8:10 PM, Johan Henselmans wrote:
I am trying to deploy an application on a machine from a
customer. No option to install WebObjects deployment, so I tried
to deploy as a servlet. First I ran into the problem that the
machine could not load the EOModel file, because NSPathUtilities
failed to load the eomodel directory.
I have used a fixed NSPathUtilities.class to work around a bug
in the JavaFoundation.jar that Apple supplies. That works fine
on Tomcat 4.1.29-LE on a a10.3.9 machine, but on a FreeBSD
machine running tomcat 4.1.30 I am getting the following error:
type Status report
message Servlet WOServletAdaptor is currently unavailable
description The requested service (Servlet WOServletAdaptor
is currently unavailable) is not currently available.
I have also tried it on a 4.1.31 Tomcat with Java 1.5_05 Linux
machine. Same error message...
Does anybody what this means, and if there is some kind of
workaround? Could it have something to do with a license? (I
used a 5.2 license as I started this project in a 5.2
environment but progressed into 5.3 for other reasons)
Best Regards,
Johan Henselmans
http://www.netsense.nl
Tel: +31-20-6267538
Fax: +31-20-6273852
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-deploy mailing list (Webobjects-
[EMAIL PROTECTED])
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-deploy/chill%
40global-village.net
This email sent to [EMAIL PROTECTED]
--
Coming in 2006 - an introduction to web applications using
WebObjects and Xcode http://www.global-village.net/wointro
Practical WebObjects - for developers who want to increase their
overall knowledge of WebObjects or who are trying to solve
specific problems. http://www.global-village.net/products/
practical_webobjects
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-deploy mailing list (Webobjects-
[EMAIL PROTECTED])
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-deploy/
webobjects%40avendasora.com
This email sent to [EMAIL PROTECTED]
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-deploy mailing list (Webobjects-
[EMAIL PROTECTED])
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-deploy/johan%
40netsense.nl
This email sent to [EMAIL PROTECTED]
Best Regards,
Johan Henselmans
http://www.netsense.nl
Tel: +31-20-6267538
Fax: +31-20-6273852