Hi Clark,
On Oct 24, 2006, at 10:17 PM, Clark Mueller wrote:
Chuck,
Very odd! :-)
This is mostly a very, very simple application. There's probably
less than 100 lines of controller code in total, and only three
components. Nothing happens in the app constructor. It uses Axis as
a client (not using WO web services), but not on launch. It has
three models with no custom business logic. I'm not using Wonder
for this project, and the frameworks are not even installed on the
deployment server. Here are the "weird" things I can think of:
- I built it under JDK v1.5. Still runs fine on my development
machine, and I certainly haven't had any problems at least with
apps LAUNCHING using JDK 1.5. Building it under 1.4.2 doesn't seem
to have made a difference.
Check
- The .woa shows up as a folder in the Finder on the deployment
machine... which is odd only because the other apps don't.
That is odd. I am not sure why that would happen. I don't know if
it matters as it starts to launch.
The best I can figure is that it IS a WOLips specific problem of
some sort - but I don't know nearly enough about what WOLips does
differently in terms of building the application bundle to figure
out where to start troubleshooting it. This is literally the first
time I've actually dealt with a woa built by WOLips, but the bundle
contents look correct...
I've never seen this happen before either.
The only other interesting thing I noticed is that while it is
hung, Monitor recognizes it as running, and if I go to the app in a
browser, it shows a blank page. Here is the thread dump.
That sounds more like the app is throwing an exception when a request
arrives and the log output is being redirected (perhaps to /dev/
null). It will be hard to debug without log output.
Full thread dump Java HotSpot(TM) Client VM (1.5.0_06-64 mixed
mode, sharing):
"WorkerThread15" prio=5 tid=0x0051d0e0 nid=0x187fc00 waiting for
monitor entry [0xf151a000..0xf151aab0]
at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:382)
- waiting to lock <0x268b0120> (a java.net.SocksSocketImpl)
at java.net.ServerSocket.implAccept(ServerSocket.java:450)
at java.net.ServerSocket.accept(ServerSocket.java:421)
at com.webobjects.appserver._private.WOWorkerThread.run
(WOWorkerThread.java:238)
at java.lang.Thread.run(Thread.java:613)
These threads are just waiting for an incoming request.
"Thread-0" daemon prio=5 tid=0x00518260 nid=0x185e600 waiting on
condition [0xf0d0a000..0xf0d0aab0]
at java.lang.Thread.sleep(Native Method)
at com.webobjects.appserver.WOApplication
$_LifebeatThread.run(WOApplication.java:1233)
"Session Timeout Thread" daemon prio=5 tid=0x00517b60
nid=0x1867000 waiting on condition [0xf0c89000..0xf0c89ab0]
at java.lang.Thread.sleep(Native Method)
at com.webobjects.appserver.WOSessionStore
$_SessionTimeoutManager.run(WOSessionStore.java:110)
at java.lang.Thread.run(Thread.java:613)
"Low Memory Detector" daemon prio=5 tid=0x0050a880 nid=0x1810800
runnable [0x00000000..0x00000000]
"CompilerThread0" daemon prio=9 tid=0x00509f30 nid=0x1810400
waiting on condition [0x00000000..0xf0b06358]
"Signal Dispatcher" daemon prio=9 tid=0x00509b30 nid=0x1815800
waiting on condition [0x00000000..0x00000000]
"Finalizer" daemon prio=8 tid=0x00509280 nid=0x1810000 in
Object.wait() [0xf0a04000..0xf0a04ab0]
at java.lang.Object.wait(Native Method)
- waiting on <0x26ce7000> (a java.lang.ref.ReferenceQueue
$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:
116)
- locked <0x26ce7000> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:
132)
at java.lang.ref.Finalizer$FinalizerThread.run
(Finalizer.java:159)
"Reference Handler" daemon prio=10 tid=0x00508e90 nid=0x180f000 in
Object.wait() [0xf0983000..0xf0983ab0]
at java.lang.Object.wait(Native Method)
- waiting on <0x26ce7080> (a java.lang.ref.Reference$Lock)
at java.lang.Object.wait(Object.java:474)
at java.lang.ref.Reference$ReferenceHandler.run
(Reference.java:116)
- locked <0x26ce7080> (a java.lang.ref.Reference$Lock)
"main" prio=5 tid=0x00501610 nid=0x1804600 in Object.wait()
[0xf07ff000..0xf08002c0]
at java.lang.Object.wait(Native Method)
- waiting on <0x268b1000> (a
com.webobjects.appserver._WORunLoop)
at
com.webobjects.appserver._WORunLoop._acceptInputBeforeDate
(_WORunLoop.java:217)
at com.webobjects.appserver._WORunLoop.runBeforeDate
(_WORunLoop.java:71)
- locked <0x268b1000> (a com.webobjects.appserver._WORunLoop)
at com.webobjects.appserver.WOApplication._runOnce
(WOApplication.java:775)
at com.webobjects.appserver.WOApplication.run
(WOApplication.java:900)
at com.webobjects.appserver.WOApplication.main
(WOApplication.java:324)
at com.macxprts.repairstatus.Application.main
(Application.java:34)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)
at sun.reflect.NativeMethodAccessorImpl.invoke
(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke
(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at com.webobjects._bootstrap.WOBootstrap.main
(WOBootstrap.java:71)
"VM Thread" prio=9 tid=0x005086b0 nid=0x1803c00 runnable
"VM Periodic Task Thread" prio=9 tid=0x0050bf30 nid=0x181a000
waiting on condition
"Exception Catcher Thread" prio=10 tid=0x00501820 nid=0x1804e00
runnable
Nothing looks hung there, just a WO app waiting for something to do.
Chuck
On 24 Oct 06, at 10:27 PM, Chuck Hill wrote:
Clark,
This is rather odd! I can't think of what it might be. Let's try
getting a thread dump when it hangs and see where it is stuck,
maybe that will suggest something. Are you using Log4J or
anything else unusual? Are you using Wonder?
If you need help getting a thread dump, this should help: http://
www.gvcsitemaker.com/gvc.webobjects/faq&mode=single&recordID=41413
Chuck
On Oct 24, 2006, at 9:01 PM, Clark Mueller wrote:
Chuck,
It doesn't appear to be. The appserver user has write access to
the /Library/WebObjects/Logs/RepairStatus directory, and the
files underneath it. I've tried running from the CLI as both the
appserver user and root, with the same results. Here's an example
of the full output:
This command hangs (with the -WOOutputPath flag, in this case set
to /dev/null):
root# /Library/WebObjects/Applications/RepairStatus.woa/
RepairStatus -WOPort 5001 -WOOutputPath /dev/null -
WOCachingEnabled NO -WODebuggingEnabled NO -WOAutoOpenInBrowser
NO -WOAutoOpenClientApplication NO -WOLifebeatInterval 30 -
WOLifebeatEnabled YES -WOLifebeatDestinationPort 1085 -WOAdaptor
WODefaultAdaptor -WOWorkerThreadCount 8 -WOListenQueueSize 128 -
WOWorkerThreadCountMin 16 -WOWorkerThreadCountMax 256 -
NSProjectSearchPath "()" -WOSessionTimeOut 3600 -
WOApplicationName RepairStatus -WOMonitorEnabled YES -WONoPause YES
Reading MacOSClassPath.txt ...
Launching RepairStatus.woa ...
java -XX:NewSize=2m -Xmx64m -Xms32m -DWORootDirectory="/System" -
DWOLocalRootDirectory="" -DWOUserDirectory="/library/webobjects/
applications" -DWOEnvClassPath="" -
DWOApplicationClass=com.macxprts.repairstatus.Application -
DWOPlatform=MacOS -Dcom.webobjects.pid=739 -classpath
WOBootstrap.jar com.webobjects._bootstrap.WOBootstrap -WOPort
5001 -WOOutputPath /dev/null -WOCachingEnabled NO -
WODebuggingEnabled NO -WOAutoOpenInBrowser NO -
WOAutoOpenClientApplication NO -WOLifebeatInterval 30 -
WOLifebeatEnabled YES -WOLifebeatDestinationPort 1085 -WOAdaptor
WODefaultAdaptor -WOWorkerThreadCount 8 -WOListenQueueSize 128 -
WOWorkerThreadCountMin 16 -WOWorkerThreadCountMax 256 -
NSProjectSearchPath "()" -WOSessionTimeOut 3600 -
WOApplicationName RepairStatus -WOMonitorEnabled YES -WONoPause YES
appRoot is /Library/WebObjects/Applications/RepairStatus.woa/
Contents
Loading /Library/WebObjects/Applications/RepairStatus.woa/
Contents/MacOS/MacOSClassPath.txt
Generated classpath:
/Library/WebObjects/Applications/RepairStatus.woa/Contents/
Resources/Java/
/Library/WebObjects/Applications/RepairStatus.woa/Contents/
Resources/Java/repairstatus.jar
/System/Library/Frameworks/JavaWebObjects.framework/Resources/
Java/javawebobjects.jar
/System/Library/Frameworks/JavaFoundation.framework/Resources/
Java/javafoundation.jar
/System/Library/Frameworks/JavaXML.framework/Resources/Java/
javaxml.jar
/System/Library/Frameworks/JavaEOAccess.framework/Resources/
Java/javaeoaccess.jar
/System/Library/Frameworks/JavaEOControl.framework/Resources/
Java/javaeocontrol.jar
/System/Library/Frameworks/JavaJDBCAdaptor.framework/Resources/
Java/javajdbcadaptor.jar
/Library/Frameworks/JavaWOExtensions.framework/Resources/Java/
JavaWOExtensions.jar
^C^C^C
This command works (no -WOOutputPath flag at all):
# sudo -u appserver /Library/WebObjects/Applications/
RepairStatus.woa/RepairStatus -WOPort 5001 -WOCachingEnabled NO -
WODebuggingEnabled NO -WOAutoOpenInBrowser NO -
WOAutoOpenClientApplication NO -WOLifebeatInterval 30 -
WOLifebeatEnabled YES -WOLifebeatDestinationPort 1085 -WOAdaptor
WODefaultAdaptor -WOWorkerThreadCount 8 -WOListenQueueSize 128 -
WOWorkerThreadCountMin 16 -WOWorkerThreadCountMax 256 -
NSProjectSearchPath "()" -WOSessionTimeOut 3600 -
WOApplicationName RepairStatus -WOMonitorEnabled YES -WONoPause YES
Reading MacOSClassPath.txt ...
Launching RepairStatus.woa ...
java -XX:NewSize=2m -Xmx64m -Xms32m -DWORootDirectory="/System" -
DWOLocalRootDirectory="" -DWOUserDirectory="/library/webobjects/
logs/RepairStatus" -DWOEnvClassPath="" -
DWOApplicationClass=com.macxprts.repairstatus.Application -
DWOPlatform=MacOS -Dcom.webobjects.pid=782 -classpath
WOBootstrap.jar com.webobjects._bootstrap.WOBootstrap -WOPort
5001 -WOCachingEnabled NO -WODebuggingEnabled NO -
WOAutoOpenInBrowser NO -WOAutoOpenClientApplication NO -
WOLifebeatInterval 30 -WOLifebeatEnabled YES -
WOLifebeatDestinationPort 1085 -WOAdaptor WODefaultAdaptor -
WOWorkerThreadCount 8 -WOListenQueueSize 128 -
WOWorkerThreadCountMin 16 -WOWorkerThreadCountMax 256 -
NSProjectSearchPath "()" -WOSessionTimeOut 3600 -
WOApplicationName RepairStatus -WOMonitorEnabled YES -WONoPause YES
appRoot is /Library/WebObjects/Applications/RepairStatus.woa/
Contents
Loading /Library/WebObjects/Applications/RepairStatus.woa/
Contents/MacOS/MacOSClassPath.txt
Generated classpath:
/Library/WebObjects/Applications/RepairStatus.woa/Contents/
Resources/Java/
/Library/WebObjects/Applications/RepairStatus.woa/Contents/
Resources/Java/repairstatus.jar
/System/Library/Frameworks/JavaWebObjects.framework/Resources/
Java/javawebobjects.jar
/System/Library/Frameworks/JavaFoundation.framework/Resources/
Java/javafoundation.jar
/System/Library/Frameworks/JavaXML.framework/Resources/Java/
javaxml.jar
/System/Library/Frameworks/JavaEOAccess.framework/Resources/
Java/javaeoaccess.jar
/System/Library/Frameworks/JavaEOControl.framework/Resources/
Java/javaeocontrol.jar
/System/Library/Frameworks/JavaJDBCAdaptor.framework/Resources/
Java/javajdbcadaptor.jar
/Library/Frameworks/JavaWOExtensions.framework/Resources/Java/
JavaWOExtensions.jar
[2006-10-24 22:53:17 CDT] <main> Creating LifebeatThread now
with: RepairStatus 5001 <host>/<ip> 1085 30000
Welcome to RepairStatus!
[2006-10-24 22:53:17 CDT] <main> The URL for webserver connect is:
http://<ip>/cgi-bin/WebObjects/RepairStatus.woa/-5001
[2006-10-24 22:53:17 CDT] <main> null
[2006-10-24 22:53:17 CDT] <main> Waiting for requests...
Thanks,
Clark
On 24 Oct 06, at 9:35 PM, Chuck Hill wrote:
Hi Clark,
It is probably a permissions problem as here:
http://www.gvcsitemaker.com/gvc.webobjects/
faq&mode=single&recordID=19193
HTH
Chuck
On Oct 24, 2006, at 8:31 PM, Clark Mueller wrote:
Hi everyone,
I'm having a problem deploying a new WO application. This is a
very small app, and it's the first that I've built for
deployment with WOLips (I am not sure if that's related or not,
but I did it according to the tutorial @ http://
www.objectstyle.org/confluence/display/WOL/Deploy+a+WO
+Application). What's happening is that on launch, the
application hangs immediately after printing the class path. In
monitor, it eventually times out as a death. From the CLI, it
looks like it just hangs that way indefinitely. The launch
arguments are like so:
/Library/WebObjects/Applications/RepairStatus.woa/RepairStatus
-WOPort 5001 -WOOutputPath /dev/null -WOCachingEnabled NO -
WODebuggingEnabled NO -WOAutoOpenInBrowser NO -
WOAutoOpenClientApplication NO -WOLifebeatInterval 30 -
WOLifebeatEnabled YES -WOLifebeatDestinationPort 1085 -
WOAdaptor WODefaultAdaptor -WOWorkerThreadCount 8 -
WOListenQueueSize 128 -WOWorkerThreadCountMin 16 -
WOWorkerThreadCountMax 256 -NSProjectSearchPath "()" -
WOSessionTimeOut 3600 -WOApplicationName RepairStatus -
WOMonitorEnabled YES -WONoPause YES
I've found that if I remove WOOoutputPath, the app launches
fine, but if it is set (apparently to anything), the app will
hang. Other apps on the server are not having any problems
launching.
Has anyone seen this before? Any thoughts?
Thanks,
Clark
--
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-deploy@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-deploy/archive%40mail-archive.com
This email sent to archive@mail-archive.com