Re: [Resin-interest] Resin keeps restarting...
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Hi Peter, I have a server that Resin keeps restarting every 15-20 minutes. Where should we start to look to see what is going on. I just enabled full debug logging so starting to gather that information. I'd like to know any pointers we should start looking at once some data is captured. maybe your jvm memory is running low and so the watchdog process restarts your env. It might help to just increase your jvm mem a bit by adding jvm-arg-Xmx1536m/jvm-arg to your resin config. (You didn't write which version you're using, so I assume v4.x here) Best regards, --- Jan. -BEGIN PGP SIGNATURE- Version: GnuPG v1.4.10 (Darwin) iEYEARECAAYFAkujJQwACgkQME/SSH3iSFlOtQCeKyhdsKsadgI6Rg0QpY5JvTRA Z1wAnj3q09Lx41IIAJHxGbREwLFZH92B =dAnl -END PGP SIGNATURE- ___ resin-interest mailing list resin-interest@caucho.com http://maillist.caucho.com/mailman/listinfo/resin-interest
[Resin-interest] Qeurcus Stack Overflow (resin 4.0.0)
Hi. Under resin 4.0.0, my Word Press installation fails with a stack overflow. The bit of PHP triggering it is the line with do {: reset( $wp_filter[ $tag ] ); do { foreach ( (array) current($wp_filter[$tag]) as $the_ ) if ( !is_null($the_['function']) ) call_user_func_array($the_['function'], array_slice($args, 0, (int) $the_['accepted_args'])); The stack trace excerpt is (this is the lastmost portion in the log; it continues prior to this for a long time): [03-19 01:46:41.267] {http--80-7} at com.caucho.quercus.env.ObjectExtValue.callMethod(ObjectExtValue.java:809) [03-19 01:46:41.267] {http--80-7} at com.caucho.quercus.expr.MethodCallExpr.eval(MethodCallExpr.java:104) [03-19 01:46:41.267] {http--80-7} at com.caucho.quercus.statement.ExprStatement.execute(ExprStatement.java:64) [03-19 01:46:41.267] {http--80-7} at com.caucho.quercus.statement.BlockStatement.execute(BlockStatement.java:105) [03-19 01:46:41.267] {http--80-7} at com.caucho.quercus.program.Function.callImpl(Function.java:381) [03-19 01:46:41.267] {http--80-7} at com.caucho.quercus.program.Function.call(Function.java:310) [03-19 01:46:41.267] {http--80-7} at com.caucho.quercus.function.AbstractFunction.callMethod(AbstractFunction.java:375) [03-19 01:46:41.267] {http--80-7} at com.caucho.quercus.env.ObjectExtValue.callMethod(ObjectExtValue.java:809) [03-19 01:46:41.267] {http--80-7} at com.caucho.quercus.expr.MethodCallExpr.eval(MethodCallExpr.java:104) [03-19 01:46:41.267] {http--80-7} at com.caucho.quercus.statement.ExprStatement.execute(ExprStatement.java:64) [03-19 01:46:41.267] {http--80-7} at com.caucho.quercus.program.Function.callImpl(Function.java:381) [03-19 01:46:41.267] {http--80-7} at com.caucho.quercus.program.Function.call(Function.java:310) [03-19 01:46:41.267] {http--80-7} at com.caucho.quercus.function.AbstractFunction.callMethod(AbstractFunction.java:375) [03-19 01:46:41.267] {http--80-7} at com.caucho.quercus.env.ObjectExtValue.callMethod(ObjectExtValue.java:809) [03-19 01:46:41.267] {http--80-7} at com.caucho.quercus.expr.MethodCallExpr.eval(MethodCallExpr.java:104) [03-19 01:46:41.267] {http--80-7} at com.caucho.quercus.statement.ExprStatement.execute(ExprStatement.java:64) [03-19 01:46:41.267] {http--80-7} at com.caucho.quercus.statement.BlockStatement.execute(BlockStatement.java:105) [03-19 01:46:41.267] {http--80-7} at .do_action(/export/home/rmann/www/org/roderickmann/mgfb/wp-includes/plugin.php:336) It appears to be stuck in an infinite recursion. Any ideas? I see there are two stack overflow-related fixes in 4.0.0 and 4.0.1, but if this isn't the one fixed in 4.0.1, I don't want to try to upgrade Resin (I tried to upgrade to 4.0.5 today, and it failed to work well). TIA, Rick ___ resin-interest mailing list resin-interest@caucho.com http://maillist.caucho.com/mailman/listinfo/resin-interest
[Resin-interest] Classpath Question
Resin version: resin-pro-3.1.9 I am trying to convert my resin-pro-3.0.23 startup scripts and resin.conf file to work with resin-pro-3.1.9. It's close, but there is a small error. I am trying to build a start script similar to: $RESIN_HOME/bin/httpd.sh -verbose \ -J-server \ -J-Xmx$JAVA_MX \ -J-Xms$JAVA_MS \ -J-verbose:gc \ -J-XX:MaxGCPauseMillis=5000 \ -J-XX:GCTimeRatio=19 \ -J-XX:+PrintGCTimeStamps \ -J-Djava.security.egd=/dev/urandom \ -J-cp=/opt/server/java/test.jar \ -server-root $SERVER_ROOT \ -Dresin.home=/opt/resin-pro-3.1.9 \ -conf /opt/server/conf/resin.xml \ $1 But when I launch it, it fails on this line in the resin.xml: /opt/server/conf/resin.xml:41: java.lang.ClassNotFoundException: com.encryption. Password in EnvironmentClassLoader[] 39: key-store-typejks/key-store-type 40: key-store-file/opt/server/security/ssl.kdb/key-store-file 41: password resin:type=com.encryption.Passwordabcdefgh/password 42: /jsse-ssl 43: /http How do I set my classpath such that Resin can find the com.encryption.Password class we have written, which resides in the test.jar? I have tried adding -J-cp=... and just setting the CLASSPATH environment variable in our start script, but not having any luck. I also have this in my resin.xml: resin xmlns=http://caucho.com/ns/resin; xmlns:resin=http://caucho.com/ns/resin/core; log name= level=info path=stdout:/ cluster id= library-loader path=/opt/server/java/test.jar/ Thanks, Aaron ___ resin-interest mailing list resin-interest@caucho.com http://maillist.caucho.com/mailman/listinfo/resin-interest
Re: [Resin-interest] Classpath Question
I think what you want to do is add class-loader library-loader path=/opt/server/java/ /class-loader To your resin.xml. At least, that's how I do it in resin-4.0.x In 4, you can also add all those Java args in the resin.xml file (I think you can in 3.1, too, but I don't know for sure). On Mar 19, 2010, at 07:48:27, Aaron Freeman wrote: Resin version: resin-pro-3.1.9 I am trying to convert my resin-pro-3.0.23 startup scripts and resin.conf file to work with resin-pro-3.1.9. It's close, but there is a small error. I am trying to build a start script similar to: $RESIN_HOME/bin/httpd.sh -verbose \ -J-server \ -J-Xmx$JAVA_MX \ -J-Xms$JAVA_MS \ -J-verbose:gc \ -J-XX:MaxGCPauseMillis=5000 \ -J-XX:GCTimeRatio=19 \ -J-XX:+PrintGCTimeStamps \ -J-Djava.security.egd=/dev/urandom \ -J-cp=/opt/server/java/test.jar \ -server-root $SERVER_ROOT \ -Dresin.home=/opt/resin-pro-3.1.9 \ -conf /opt/server/conf/resin.xml \ $1 But when I launch it, it fails on this line in the resin.xml: /opt/server/conf/resin.xml:41: java.lang.ClassNotFoundException: com.encryption. Password in EnvironmentClassLoader[] 39: key-store-typejks/key-store-type 40: key-store-file/opt/server/security/ssl.kdb/key-store-file 41: password resin:type=com.encryption.Passwordabcdefgh/password 42: /jsse-ssl 43: /http How do I set my classpath such that Resin can find the com.encryption.Password class we have written, which resides in the test.jar? I have tried adding -J-cp=... and just setting the CLASSPATH environment variable in our start script, but not having any luck. I also have this in my resin.xml: resin xmlns=http://caucho.com/ns/resin; xmlns:resin=http://caucho.com/ns/resin/core; log name= level=info path=stdout:/ cluster id= library-loader path=/opt/server/java/test.jar/ Thanks, Aaron ___ resin-interest mailing list resin-interest@caucho.com http://maillist.caucho.com/mailman/listinfo/resin-interest ___ resin-interest mailing list resin-interest@caucho.com http://maillist.caucho.com/mailman/listinfo/resin-interest
Re: [Resin-interest] New 4.0.5 install constantly dropping connections on unloaded server
Rick Mann wrote: Some additional information: I tried installing 4.0.5 on my better server (Resin-4.0.0, Nexenta/Open Solaris, recent, lots of RAM, faster CPUs), and got similar behavior. I got it up and running, noticed some oddness at first (java link errors running my app, slow page loads the first few times), then it seemed to get normal. Then about 5 minutes later, it stopped responding. I didn't investigate, but rather just switched back to using resin-4.0.0. No idea if it was the same issue. In the logs, I saw it restarting, but it never came back. Thanks for the update. Just to review the symptoms: 1. Both JVMs are around and responds to kill -QUIT (there have been cases where the JVM has been so frozen it doesn't respond to anything.) 2. Resin is not responding to connect() for either of two ports. 3. The thread dump shows active threads in the nativeAccept() of both ports. 4. Netstat looks normal (i.e. it's not showing lots of connections in strange states.) My stress testing isn't showing anything like this kind of behavior yet, but any further details would help narrow the tests. -- Scott ___ resin-interest mailing list resin-interest@caucho.com http://maillist.caucho.com/mailman/listinfo/resin-interest
Re: [Resin-interest] New 4.0.5 install constantly dropping connections on unloaded server
On Mar 19, 2010, at 12:40:23, Scott Ferguson wrote: Rick Mann wrote: Some additional information: I tried installing 4.0.5 on my better server (Resin-4.0.0, Nexenta/Open Solaris, recent, lots of RAM, faster CPUs), and got similar behavior. I got it up and running, noticed some oddness at first (java link errors running my app, slow page loads the first few times), then it seemed to get normal. Then about 5 minutes later, it stopped responding. I didn't investigate, but rather just switched back to using resin-4.0.0. No idea if it was the same issue. In the logs, I saw it restarting, but it never came back. Thanks for the update. Just to review the symptoms: 1. Both JVMs are around and responds to kill -QUIT (there have been cases where the JVM has been so frozen it doesn't respond to anything.) 2. Resin is not responding to connect() for either of two ports. 3. The thread dump shows active threads in the nativeAccept() of both ports. 4. Netstat looks normal (i.e. it's not showing lots of connections in strange states.) My stress testing isn't showing anything like this kind of behavior yet, but any further details would help narrow the tests. Scott, I finally just moved my webapps to my Open Solaris machine, which is much more modern, and has a lot more RAM available. (It is currently running resin-4.0.0, warts and all.) This will allow me to update the older machine at my leisure. The problem I'm facing now is twofold, and the first of these might be related. 1) Attempts to upgrade to resin-4.0.5 have failed. Resin seems to run fine, but then stops after an hour or two. Because this machine is more critical (it hosts the data for my iPhone app), I just switch back to resin-4.0.0, which has problems but is stable. More details about how I installed it below. 2) On both 4.0.0 and 4.0.5, I have problems with Quercus and WordPress. In 4.0.0, I get a StackOverflowError. In 4.0.5, I get a PHP report of a database connection error (and I believe that comes with a 500 response). Installation Details The configuration for both is exactly the same, as much as I can remember and glean from my history. I put the individual resin released in /usr/local/resin/versions(/resin-4.0.0, resin-4.0.5, etc.), and symlink one of those to /usr/local/resin/current. When I installed 4.0.0, I believe I set that up first, then ran ./configure --prefix=/usr/local/resin/current, then make, sudo make install. For 4.0.5, I put it in place, but left the symlink pointing to 4.0.0, and did configure --prefix=/usr/local/resin/versions/resin-4.0.5, make, make install (not sudo). This complains that it couldn't install /etc/resin/ stuff, but I already had that from the previous build. Now, when I switch between versions, I change the symlink, and blow away all the WEB-INF/work directories (I'm posting a separate question about that), sometimes I stop and restart the server via the resin.sh script I have (which is just a wrapper around: java -jar /usr/local/resin/current/lib/resin.jar -verbose -root-directory /var/www -conf /etc/resin/resin.xml $* But usually it restarts itself (because of the symlink change, I presume). When I get some time, I'll try with resin-4.0.4, but I'm supposed to be doing real work for my employer today. -- Rick ___ resin-interest mailing list resin-interest@caucho.com http://maillist.caucho.com/mailman/listinfo/resin-interest
Re: [Resin-interest] configure not finding 64-bit java
On Mar 19, 2010, at 12:43:28, Scott Ferguson wrote: Rick Mann wrote: I only have one JDK installed. You can always use --enable-64bit. The configure script uses java -version to see if it's 64-bit and as you showed below, java -version is 32-bit on your machine. (And Resin's configure script won't try to assume that you really want to use -d64.) Even with --enable-64bit, it didn't find that java was 64-bit. Does --enable-64bit override that? Even so, it ran into other problems as a 64-bit build. My needs currently allow me to get by with 32-bit, so I'll not worry about that for now. -- Rick ___ resin-interest mailing list resin-interest@caucho.com http://maillist.caucho.com/mailman/listinfo/resin-interest
[Resin-interest] Location of WEB-INF/work dirs?
Is there any way to configure Resin to put the WEB-INF/work dir somewhere other than under WEB-INF? I'd like to designate a completely separate location for all the work dirs Resin creates, that I can delete with a single rm -rf, rather than having to visit a bunch of separate webapps. As a general rule, I'd like to leave my webapp deployment directories untouched as the system runs. TIA, Rick ___ resin-interest mailing list resin-interest@caucho.com http://maillist.caucho.com/mailman/listinfo/resin-interest
Re: [Resin-interest] Location of WEB-INF/work dirs?
2010/3/19 Rick Mann rm...@latencyzero.com Is there any way to configure Resin to put the WEB-INF/work dir somewhere other than under WEB-INF? I'd like to designate a completely separate location for all the work dirs Resin creates, that I can delete with a single rm -rf, rather than having to visit a bunch of separate webapps. With Resin 3.1 it was possible: http://www.caucho.com/resin-3.1/doc/env-tags.xtp#work-dir The documentation of Resin 4 is very strange, I even can't find the web-app configuration stuff. So I don't know if the work-dir element still works. -- Steffen As a general rule, I'd like to leave my webapp deployment directories untouched as the system runs. TIA, Rick ___ resin-interest mailing list resin-interest@caucho.com http://maillist.caucho.com/mailman/listinfo/resin-interest ___ resin-interest mailing list resin-interest@caucho.com http://maillist.caucho.com/mailman/listinfo/resin-interest
Re: [Resin-interest] Location of WEB-INF/work dirs?
On Mar 19, 2010, at 13:41:16, Steffen Busch wrote: 2010/3/19 Rick Mann rm...@latencyzero.com Is there any way to configure Resin to put the WEB-INF/work dir somewhere other than under WEB-INF? I'd like to designate a completely separate location for all the work dirs Resin creates, that I can delete with a single rm -rf, rather than having to visit a bunch of separate webapps. With Resin 3.1 it was possible: http://www.caucho.com/resin-3.1/doc/env-tags.xtp#work-dir The documentation of Resin 4 is very strange, I even can't find the web-app configuration stuff. So I don't know if the work-dir element still works. There are a lot of broken Resin 4 doc links. I'll try that Resin 3 tag. Hmm. It appears that it's relative to the webapp dir. What I want is to say, at the server or resin level, an absolute path to a location, and have it then create a series of work directories underneath that, one for each app it instantiates. Thanks, though. -- Rick ___ resin-interest mailing list resin-interest@caucho.com http://maillist.caucho.com/mailman/listinfo/resin-interest
[Resin-interest] Warning building resin-4.0.4
Just an FYI, when I make resin, I get this warning: $ uname -a SunOS foo 5.11 NexentaOS_20081207 i86pc i386 i86pc Solaris $ ./configure --prefix=/usr/local/resin/versions/resin-4.0.4 --datadir=/usr/local/resin/versions/resin-4.0.4 ... $ make ... gcc -g -O2 -DPOLL -D_POSIX_PTHREAD_SEMANTICS -D__SOLARIS__ -DHAS_JVMTI -DRESIN_HOME=\/usr/local/resin/versions/resin-4.0.4\ -I/usr/include -I/usr/local/java/current/jre/include -I/usr/local/java/current/jre/include/solaris -I../common -DCPU=\i386\ -DOS= -c -o jni_socket.o jni_socket.c jni_socket.c: In function 'Java_com_caucho_vfs_JniServerSocketImpl_bindPort': jni_socket.c:691: warning: passing argument 2 of 'getsockname' from incompatible pointer type ___ resin-interest mailing list resin-interest@caucho.com http://maillist.caucho.com/mailman/listinfo/resin-interest
Re: [Resin-interest] Location of WEB-INF/work dirs?
2010/3/19 Rick Mann rm...@latencyzero.com On Mar 19, 2010, at 13:41:16, Steffen Busch wrote: 2010/3/19 Rick Mann rm...@latencyzero.com Is there any way to configure Resin to put the WEB-INF/work dir somewhere other than under WEB-INF? I'd like to designate a completely separate location for all the work dirs Resin creates, that I can delete with a single rm -rf, rather than having to visit a bunch of separate webapps. With Resin 3.1 it was possible: http://www.caucho.com/resin-3.1/doc/env-tags.xtp#work-dir The documentation of Resin 4 is very strange, I even can't find the web-app configuration stuff. So I don't know if the work-dir element still works. There are a lot of broken Resin 4 doc links. I'll try that Resin 3 tag. Hmm. It appears that it's relative to the webapp dir. What I want is to say, at the server or resin level, an absolute path to a location, and have it then create a series of work directories underneath that, one for each app it instantiates. With Resin 3.1, I would do this: web-app-default resin:messageMY-DEBUG: work-dir for web-app ${webApp.name} is ${server.root}/work/${webApp.name}/resin:message work-dir${resin.root}/work/${webApp.name}/work-dir This configures the work-dir for all web-apps to be your resin.root (you might want to change it to an asolute path you prefer) plus /work plus the webApp Name. The resin:message element is just to show you the work-dir on startupt. Please note that the work-dir might be generated only, when the web-app gets started or accessed. At least it was just seconds ago in my installation. -- Steffen. Thanks, though. -- Rick ___ resin-interest mailing list resin-interest@caucho.com http://maillist.caucho.com/mailman/listinfo/resin-interest ___ resin-interest mailing list resin-interest@caucho.com http://maillist.caucho.com/mailman/listinfo/resin-interest
Re: [Resin-interest] Location of WEB-INF/work dirs?
Thanks, I'll try that out! On Mar 19, 2010, at 14:10:41, Steffen Busch wrote: 2010/3/19 Rick Mann rm...@latencyzero.com On Mar 19, 2010, at 13:41:16, Steffen Busch wrote: 2010/3/19 Rick Mann rm...@latencyzero.com Is there any way to configure Resin to put the WEB-INF/work dir somewhere other than under WEB-INF? I'd like to designate a completely separate location for all the work dirs Resin creates, that I can delete with a single rm -rf, rather than having to visit a bunch of separate webapps. With Resin 3.1 it was possible: http://www.caucho.com/resin-3.1/doc/env-tags.xtp#work-dir The documentation of Resin 4 is very strange, I even can't find the web-app configuration stuff. So I don't know if the work-dir element still works. There are a lot of broken Resin 4 doc links. I'll try that Resin 3 tag. Hmm. It appears that it's relative to the webapp dir. What I want is to say, at the server or resin level, an absolute path to a location, and have it then create a series of work directories underneath that, one for each app it instantiates. With Resin 3.1, I would do this: web-app-default resin:messageMY-DEBUG: work-dir for web-app ${webApp.name} is ${server.root}/work/${webApp.name}/resin:message work-dir${resin.root}/work/${webApp.name}/work-dir This configures the work-dir for all web-apps to be your resin.root (you might want to change it to an asolute path you prefer) plus /work plus the webApp Name. The resin:message element is just to show you the work-dir on startupt. Please note that the work-dir might be generated only, when the web-app gets started or accessed. At least it was just seconds ago in my installation. -- Steffen. Thanks, though. -- Rick ___ resin-interest mailing list resin-interest@caucho.com http://maillist.caucho.com/mailman/listinfo/resin-interest ___ resin-interest mailing list resin-interest@caucho.com http://maillist.caucho.com/mailman/listinfo/resin-interest ___ resin-interest mailing list resin-interest@caucho.com http://maillist.caucho.com/mailman/listinfo/resin-interest
Re: [Resin-interest] Classpath Question
It's working now. For completeness and to help others moving from 3.0.x to 3.1.x or 4.0.x you should change your startup script from this style (which relies on a wrapper.pl): $RESIN_HOME/bin/httpd.sh -verbose \ -J-server \ -J-Xmx$JAVA_MX \ -J-Xms$JAVA_MS \ -J-verbose:gc \ -J-XX:MaxGCPauseMillis=5000 \ -J-XX:GCTimeRatio=19 \ -J-XX:+PrintGCTimeStamps \ -J-Djava.security.egd=/dev/urandom \ -J-cp=/opt/server/java/test.jar \ -server-root $SERVER_ROOT \ -Dresin.home=/opt/resin-pro-3.1.9 \ -conf /opt/server/conf/resin.xml \ $1 To something like this: $JAVA_HOME/bin/java \ -server \ -Xmx$JAVA_MX \ -Xms$JAVA_MS \ -Djava.util.logging.manager=com.caucho.log.LogManagerImpl \ -Djava.security.egd=/dev/urandom \ -Dresin.home=${RESIN_HOME} \ -jar ${RESIN_HOME}/lib/resin.jar \ -conf ${SERVER_ROOT}/conf/resin.xml \ $* And by the way that magically fixed my resin:type problem as well. ___ resin-interest mailing list resin-interest@caucho.com http://maillist.caucho.com/mailman/listinfo/resin-interest
[Resin-interest] conflicting attibute warnings
Hmm. In my latest upgrade to 4.0.4, I'm seeing a lot of these on startup: [03-19 14:56:23.566] {main} FINE (com.caucho.config.type.BeanType) BeanType[com.mysql.jdbc.ConnectionProperties]: conflicting attribute for 'pedantic' between SetterAttribute[public void com.mysql.jdbc.ConnectionProperties.setPedantic(boolean)] and SetterAttribute[public void com.mysql.jdbc.ConnectionProperties.setPedantic(boolean)] Is this something to worry about? -- Rick ___ resin-interest mailing list resin-interest@caucho.com http://maillist.caucho.com/mailman/listinfo/resin-interest
Re: [Resin-interest] Classpath Question
You may also find this Wiki page useful: http://wiki.caucho.com/Migrating_from_Resin_3.0_to_Resin_4.0 -Original Message- From: resin-interest-boun...@caucho.com [mailto:resin-interest-boun...@caucho.com] On Behalf Of Aaron Freeman Sent: Friday, March 19, 2010 4:54 PM To: General Discussion for the Resin application server Subject: Re: [Resin-interest] Classpath Question It's working now. For completeness and to help others moving from 3.0.x to 3.1.x or 4.0.x you should change your startup script from this style (which relies on a wrapper.pl): $RESIN_HOME/bin/httpd.sh -verbose \ -J-server \ -J-Xmx$JAVA_MX \ -J-Xms$JAVA_MS \ -J-verbose:gc \ -J-XX:MaxGCPauseMillis=5000 \ -J-XX:GCTimeRatio=19 \ -J-XX:+PrintGCTimeStamps \ -J-Djava.security.egd=/dev/urandom \ -J-cp=/opt/server/java/test.jar \ -server-root $SERVER_ROOT \ -Dresin.home=/opt/resin-pro-3.1.9 \ -conf /opt/server/conf/resin.xml \ $1 To something like this: $JAVA_HOME/bin/java \ -server \ -Xmx$JAVA_MX \ -Xms$JAVA_MS \ -Djava.util.logging.manager=com.caucho.log.LogManagerImpl \ -Djava.security.egd=/dev/urandom \ -Dresin.home=${RESIN_HOME} \ -jar ${RESIN_HOME}/lib/resin.jar \ -conf ${SERVER_ROOT}/conf/resin.xml \ $* And by the way that magically fixed my resin:type problem as well. ___ resin-interest mailing list resin-interest@caucho.com http://maillist.caucho.com/mailman/listinfo/resin-interest ___ resin-interest mailing list resin-interest@caucho.com http://maillist.caucho.com/mailman/listinfo/resin-interest
[Resin-interest] tag cast issues???
ARghh. If it's not one thing, it's another. I'm finally 99% in place with resin-4.0.4, and suddenly I notice this stack trace, for a JSP tag defines like this: %...@tag body-content=empty %%...@attribute name=value required=true rtexprvalue=true type=java.lang.Long description=Duration value in seconds %%@ taglib prefix=c uri=http://java.sun.com/jsp/jstl/core; %%@ taglib prefix=fmt uri=http://java.sun.com/jsp/jstl/fmt; %% long interval = (Long) pageContext.getAttribute(value); boolean neg = interval 0; interval = Math.abs(interval); long hours = interval / 3600; interval -= hours * 3600; long minutes = interval / 60; interval -= minutes * 60; long seconds = interval; hours = Math.abs(hours); minutes = Math.abs(minutes); seconds = Math.abs(seconds); pageContext.setAttribute(neg, neg); pageContext.setAttribute(hours, hours); pageContext.setAttribute(minutes, minutes); pageContext.setAttribute(seconds, seconds); %c:if test=${neg}-/c:ifc:if test=${!neg}+/c:iffmt:formatNumber value=${hours} pattern=00/:fmt:formatNumber value=${minutes} pattern=00/:fmt:formatNumber value=${seconds} pattern=00/ trace: [show] java.lang.ClassCastException: _jsp._WEB_22dINF._tags._lz._durT__tag cannot be cast to javax.servlet.jsp.tagext.Tag javax.servlet.ServletException: javax.servlet.ServletException: com.caucho.jsp.QJspException: java.lang.ClassCastException: _jsp._WEB_22dINF._tags._lz._durT__tag cannot be cast to javax.servlet.jsp.tagext.Tag at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:286) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913) at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449) at javax.servlet.http.HttpServlet.service(HttpServlet.java:119) at javax.servlet.http.HttpServlet.service(HttpServlet.java:96) at com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:109) at com.latencyzero.satdb.RequestFilter.doFilter(RequestFilter.java:124) at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:88) at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:88) at com.latencyzero.satdb.SecurityFilter.doFilter(SecurityFilter.java:215) at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:88) at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:183) at com.caucho.server.webapp.AccessLogFilterChain.doFilter(AccessLogFilterChain.java:103) at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:286) at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:780) at com.caucho.server.connection.TcpConnection.dispatchRequest(TcpConnection.java:600) at com.caucho.server.connection.TcpConnection.handleRequestsImpl(TcpConnection.java:566) at com.caucho.server.connection.TcpConnection.handleRequests(TcpConnection.java:519) at com.caucho.server.connection.TcpConnection$AcceptTask.doTask(TcpConnection.java:1100) at com.caucho.server.connection.TcpConnection$ConnectionReadTask.runThread(TcpConnection.java:1037) at com.caucho.server.connection.TcpConnection$AcceptTask.run(TcpConnection.java:1068) at com.caucho.util.ThreadPool$PoolThread.runTasks(ThreadPool.java:901) at com.caucho.util.ThreadPool$PoolThread.run(ThreadPool.java:866) Caused by: javax.servlet.ServletException: com.caucho.jsp.QJspException: java.lang.ClassCastException: _jsp._WEB_22dINF._tags._lz._durT__tag cannot be cast to javax.servlet.jsp.tagext.Tag at com.caucho.jsp.PageContextImpl.handlePageException(PageContextImpl.java:1255) at _jsp._WEB_22dINF._jsp._mission__jsp._jspService(_mission__jsp.java:30) at com.caucho.jsp.JavaPage.service(JavaPage.java:61) at com.caucho.jsp.Page.pageservice(Page.java:535) at com.caucho.server.dispatch.PageFilterChain.doFilter(PageFilterChain.java:195) at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:286) at com.caucho.server.webapp.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:283) at com.caucho.server.webapp.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:121) at org.apache.struts.chain.commands.servlet.PerformForward.handleAsForward(PerformForward.java:113) at org.apache.struts.chain.commands.servlet.PerformForward.perform(PerformForward.java:96)
Re: [Resin-interest] tag cast issues???
I'm pretty sure resin is borking the Java file generation of my tag. I've written a bug with all my notes about how the cast can't work as is: http://bugs.caucho.com/bug_view_advanced_page.php?bug_id=3956 On Mar 19, 2010, at 18:32:30, Rick Mann wrote: ARghh. If it's not one thing, it's another. I'm finally 99% in place with resin-4.0.4, and suddenly I notice this stack trace, for a JSP tag defines like this: %...@tag body-content=empty %%...@attribute name=value required=true rtexprvalue=true type=java.lang.Long description=Duration value in seconds %%@ taglib prefix=c uri=http://java.sun.com/jsp/jstl/core; %%@ taglib prefix=fmt uri=http://java.sun.com/jsp/jstl/fmt; %% long interval = (Long) pageContext.getAttribute(value); boolean neg = interval 0; interval = Math.abs(interval); long hours = interval / 3600; interval -= hours * 3600; long minutes = interval / 60; interval -= minutes * 60; long seconds = interval; hours = Math.abs(hours); minutes = Math.abs(minutes); seconds = Math.abs(seconds); pageContext.setAttribute(neg, neg); pageContext.setAttribute(hours, hours); pageContext.setAttribute(minutes, minutes); pageContext.setAttribute(seconds, seconds); %c:if test=${neg}-/c:ifc:if test=${!neg}+/c:iffmt:formatNumber value=${hours} pattern=00/:fmt:formatNumber value=${minutes} pattern=00/:fmt:formatNumber value=${seconds} pattern=00/ trace: [show] java.lang.ClassCastException: _jsp._WEB_22dINF._tags._lz._durT__tag cannot be cast to javax.servlet.jsp.tagext.Tag javax.servlet.ServletException: javax.servlet.ServletException: com.caucho.jsp.QJspException: java.lang.ClassCastException: _jsp._WEB_22dINF._tags._lz._durT__tag cannot be cast to javax.servlet.jsp.tagext.Tag at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:286) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913) at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449) at javax.servlet.http.HttpServlet.service(HttpServlet.java:119) at javax.servlet.http.HttpServlet.service(HttpServlet.java:96) at com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:109) at com.latencyzero.satdb.RequestFilter.doFilter(RequestFilter.java:124) at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:88) at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:88) at com.latencyzero.satdb.SecurityFilter.doFilter(SecurityFilter.java:215) at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:88) at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:183) at com.caucho.server.webapp.AccessLogFilterChain.doFilter(AccessLogFilterChain.java:103) at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:286) at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:780) at com.caucho.server.connection.TcpConnection.dispatchRequest(TcpConnection.java:600) at com.caucho.server.connection.TcpConnection.handleRequestsImpl(TcpConnection.java:566) at com.caucho.server.connection.TcpConnection.handleRequests(TcpConnection.java:519) at com.caucho.server.connection.TcpConnection$AcceptTask.doTask(TcpConnection.java:1100) at com.caucho.server.connection.TcpConnection$ConnectionReadTask.runThread(TcpConnection.java:1037) at com.caucho.server.connection.TcpConnection$AcceptTask.run(TcpConnection.java:1068) at com.caucho.util.ThreadPool$PoolThread.runTasks(ThreadPool.java:901) at com.caucho.util.ThreadPool$PoolThread.run(ThreadPool.java:866) Caused by: javax.servlet.ServletException: com.caucho.jsp.QJspException: java.lang.ClassCastException: _jsp._WEB_22dINF._tags._lz._durT__tag cannot be cast to javax.servlet.jsp.tagext.Tag at com.caucho.jsp.PageContextImpl.handlePageException(PageContextImpl.java:1255) at _jsp._WEB_22dINF._jsp._mission__jsp._jspService(_mission__jsp.java:30) at com.caucho.jsp.JavaPage.service(JavaPage.java:61) at com.caucho.jsp.Page.pageservice(Page.java:535) at com.caucho.server.dispatch.PageFilterChain.doFilter(PageFilterChain.java:195) at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:286) at com.caucho.server.webapp.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:283) at