[Resin-interest] Quercus doesn't implement 'array_walk' correctly and ignores 'arg_separator.input' option
Hi, I wrote two messages about the subject to forum.caucho.com but my messages haven't been published. I try here. Please, forgive me if the subject is out of interest. FIRST ISSUE === I found that Quercus 4.0.5 doesn't implement 'array_walk' rightly when the function call contains the second and the third parameters. Here a simple test case: ?php $fruits = array(d = lemon, a = orange, b = banana, c = apple); function test_alter($item1, $key, $prefix) { $item1 = $prefix:$item1; } function test_print($item2, $key) { echo $key = $item2br /\n; } echo Before ...:br /\n; array_walk($fruits, 'test_print'); array_walk($fruits, 'test_alter', 'fruit'); echo \nbr... and after:br /\n; array_walk($fruits, 'test_print'); ? The output should be: Before ...: d = lemon a = orange b = banana c = apple ... and after: d = fruit:lemon a = fruit:orange b = fruit:banana c = fruit:apple The actual output is:Before ...: = lemon = orange = banana = apple /usr/local/resin/webapps/aw1.php:17: Warning: required argument missing [array_walk] /usr/local/resin/webapps/aw1.php:17: Warning: required argument missing [array_walk] /usr/local/resin/webapps/aw1.php:17: Warning: required argument missing [array_walk] /usr/local/resin/webapps/aw1.php:17: Warning: required argument missing [array_walk] ... and after: = :lemon = :orange = :banana = :apple If array_walk contains two parameters, the second one is ignored silently. If array_walk contains three parameters, a warning is raised. I filled a Quercus bug: http://bugs.caucho.com/view.php?id=3961 Any ideas about possible workarounds? SECOND ISSUE To separate arguments of a query string, any character specified by arg_separator.input configuration option should be valid. I think that Quercus ignores arg_separator.input value and uses only '' to calculate $_GET values. I tried to set arg_separator.input both in web.xml php-ini and by ini_set() instruction. A simple test-case: ?php ini_set(arg_separator.input, ;); echo arg_separator.input value: . ini_get('arg_separator.input') . br; echo Get parameters: ; print_r($_GET); ? and call it from the browser in a way similar to this: http://localhost/php/args.php?1=first2=second;3=third [^] The output should be: arg_separator.input value: ; Get parameters: Array ( [1] = first [2] = second [3] = third ) --- The actual output is: arg_separator.input value: ; Get parameters: Array ( [1] = first [2] = second;3=third ) We are using Resin-Pro for 10 years and we would like to switch off the apache front-end used only for two PHP applications... The two applications cannot be modified for security reasons. Thanks in advance for any hints/suggestions. Ciao, Roberto ___ resin-interest mailing list resin-interest@caucho.com http://maillist.caucho.com/mailman/listinfo/resin-interest
[Resin-interest] Resin-Pro-4.0.5 Admin
Since we are upgrading from pro-3.0.23 to pro-4.0.5, we thought we would take advantage of the resin-admin stuff. However the docs aren't clear on how that's supposed to happen. This page says nothing about what to install: http://caucho.com/resin-4.0/admin/resin-admin.xtp And this page seems to elude that I have to install another product? I could have sworn we had this working in 4.0.0 without installing Quercus. http://caucho.com/resin-4.0/admin/resin-admin-console.xtp Since /resin-admin is just a web-app implemented with Quercus/PHP, enabling it is just adding an appropriate web-app tag. Hopefully this is just a documentation error? If so how do we get the admin running? If not, is it really worth installing and working through a whole new package and all the configuration overhead and learning curve that comes with it? Thanks, Aaron ___ resin-interest mailing list resin-interest@caucho.com http://maillist.caucho.com/mailman/listinfo/resin-interest
Re: [Resin-interest] CanDI unable to inject @Stateless
smallufo wrote: 2010/3/24 smallufo small...@gmail.com mailto:small...@gmail.com Mmm... There is no ejb-jar.xml in META-INF/ After adding an empty ejb-jar.xml , it still doesn't work. No matter 4.0.4 or 4.0.5 BTW I tried a lot of ejb-jar.xml settings , but non works... Is there any working example for this simple scenario ? Thanks. Can you add an ejb-server/ to your resin.xml (inside the cluster). That's a Resin bug because the ejb-server/ wasn't supposed to be required any more. -- Scott ___ 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] CanDI unable to inject @Stateless
2010/3/25 Scott Ferguson f...@caucho.com Thanks. Can you add an ejb-server/ to your resin.xml (inside the cluster). That's a Resin bug because the ejb-server/ wasn't supposed to be required any more. -- Scott Thank you , it works ! public class HelloServlet extends HttpServlet { @EJB / @Inject both works private PersonService personService; Now I can inject into Servlet with @EJB and @Inject , though I don't know the difference , the console dump seems nothing different. BTW , what is the populated JNDI name of the Stateless Bean ? in my code : @Stateless(mappedName=ejb/personService) @Local(PersonService.class) public class PersonServiceImpl implements PersonService , Serializable But I cannot find this EJB in the InitialContext (under wicket) , it throws : Caused by: java.lang.RuntimeException: Could not locate ejb of class [[interface data.PersonService]] and name [[ejb/personService]] at org.wicketstuff.javaee.JavaEEBeanLocator.lookupEjb(JavaEEBeanLocator.java:131) at org.wicketstuff.javaee.JavaEEBeanLocator.locateProxyTarget(JavaEEBeanLocator.java:109) at org.apache.wicket.proxy.LazyInitProxyFactory$JdkHandler.invoke(LazyInitProxyFactory.java:412) at org.apache.wicket.proxy.$Proxy51.getPerson(Unknown Source) at wicket.CurrentPage.init(CurrentPage.java:33) ... 31 more Caused by: javax.naming.NameNotFoundException: java:comp/env/ejb/personService at com.caucho.naming.ContextImpl.lookupImpl(ContextImpl.java:205) at com.caucho.naming.ContextImpl.lookup(ContextImpl.java:157) at javax.naming.InitialContext.lookup(InitialContext.java:392) at org.wicketstuff.javaee.JavaEEBeanLocator.lookupEjb(JavaEEBeanLocator.java:124) ... 35 more Where goes wrong ? Isn't the mappedName=ejb/personService hooked into java:comp/env ? Why resin (4.0.4) throws NameNotFoundException ? ___ resin-interest mailing list resin-interest@caucho.com http://maillist.caucho.com/mailman/listinfo/resin-interest
Re: [Resin-interest] CanDI unable to inject @Stateless
smallufo wrote: 2010/3/25 Scott Ferguson f...@caucho.com mailto:f...@caucho.com Thank you , it works ! public class HelloServlet extends HttpServlet { @EJB / @Inject both works private PersonService personService; Now I can inject into Servlet with @EJB and @Inject , though I don't know the difference , the console dump seems nothing different. Well, you can think of @EJB as the obsolete JavaEE injection method, although @EJB does have JNDI side-effects. BTW , what is the populated JNDI name of the Stateless Bean ? in my code : @Stateless(mappedName=ejb/personService) @Local(PersonService.class) public class PersonServiceImpl implements PersonService , Serializable Where goes wrong ? Isn't the mappedName=ejb/personService hooked into java:comp/env ? Why resin (4.0.4) throws NameNotFoundException ? This is kind of complicated. Technically (according to the spec), the @Stateless does not register with JNDI at all - that's a Resin-specific feature. The JNDI registration occurs either with an ejb-ref or a @EJB annotation somewhere. But that's a part of the spec that we haven't completely tested yet. We have an open bug at http://bugs.caucho.com/view.php?id=3964 to restore Resin's old behavior for backward compatibility. -- Scott ___ 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] Resin-Pro-4.0.5 Admin
On Mar 24, 2010, at 09:07:07, Aaron Freeman wrote: Since we are upgrading from pro-3.0.23 to pro-4.0.5, we thought we would take advantage of the resin-admin stuff. However the docs aren't clear on how that's supposed to happen. This page says nothing about what to install: http://caucho.com/resin-4.0/admin/resin-admin.xtp And this page seems to elude that I have to install another product? I could have sworn we had this working in 4.0.0 without installing Quercus. http://caucho.com/resin-4.0/admin/resin-admin-console.xtp Quercus is part of Resin 4.x. You get it for free. -- Rick ___ resin-interest mailing list resin-interest@caucho.com http://maillist.caucho.com/mailman/listinfo/resin-interest
Re: [Resin-interest] Resin-Pro-4.0.5 Admin
It is part of resin 4.x. Make sure you have the following in your resin.xml: web-app id=/resin-admin root-directory=${resin.root}/doc/admin prologue resin:set var=resin_admin_external value=false/ resin:set var=resin_admin_insecure value=true/ /prologue /web-app If you want to use a hostname other than localhost to access the UI, then you will have to set resin_admin_external to true. I have been looking at it since I am upgrading from 3.0 to 4 too. It looks very good. Be sure to check it out. It is nice that a lot of monitoring stuff that we have had to add on top of resin is now part of it. Bill On Wed, Mar 24, 2010 at 2:15 PM, Rick Mann rm...@latencyzero.com wrote: On Mar 24, 2010, at 09:07:07, Aaron Freeman wrote: Since we are upgrading from pro-3.0.23 to pro-4.0.5, we thought we would take advantage of the resin-admin stuff. However the docs aren't clear on how that's supposed to happen. This page says nothing about what to install: http://caucho.com/resin-4.0/admin/resin-admin.xtp And this page seems to elude that I have to install another product? I could have sworn we had this working in 4.0.0 without installing Quercus. http://caucho.com/resin-4.0/admin/resin-admin-console.xtp Quercus is part of Resin 4.x. You get it for free. -- 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] Resin-Pro-4.0.5 Admin
On 3/24/2010 1:15 PM, Rick Mann wrote: On Mar 24, 2010, at 09:07:07, Aaron Freeman wrote: Since we are upgrading from pro-3.0.23 to pro-4.0.5, we thought we would take advantage of the resin-admin stuff. However the docs aren't clear on how that's supposed to happen. This page says nothing about what to install: http://caucho.com/resin-4.0/admin/resin-admin.xtp And this page seems to elude that I have to install another product? I could have sworn we had this working in 4.0.0 without installing Quercus. http://caucho.com/resin-4.0/admin/resin-admin-console.xtp Odd, when I untar resin-pro-4.0.5 and look in the php/admin directory from the example block on the second link above: web-app id=/resin-admin root-directory=${resin.home}/php/admin The php directory doesn't exist. Let me hunt around a bit now that I know it should be there somewhere. Aaron ___ resin-interest mailing list resin-interest@caucho.com http://maillist.caucho.com/mailman/listinfo/resin-interest
Re: [Resin-interest] Resin-Pro-4.0.5 Admin
The resin-admin application is under ${resin.home}/doc/admin. I think the old location may have been under a php subdir, but it doesn't appear to be there under any of the 4.x builds that I've done in the past. -Jamie -Original Message- From: resin-interest-boun...@caucho.com [mailto:resin-interest-boun...@caucho.com] On Behalf Of Aaron Freeman Sent: Wednesday, March 24, 2010 3:12 PM To: General Discussion for the Resin application server Subject: Re: [Resin-interest] Resin-Pro-4.0.5 Admin On 3/24/2010 1:15 PM, Rick Mann wrote: On Mar 24, 2010, at 09:07:07, Aaron Freeman wrote: Since we are upgrading from pro-3.0.23 to pro-4.0.5, we thought we would take advantage of the resin-admin stuff. However the docs aren't clear on how that's supposed to happen. This page says nothing about what to install: http://caucho.com/resin-4.0/admin/resin-admin.xtp And this page seems to elude that I have to install another product? I could have sworn we had this working in 4.0.0 without installing Quercus. http://caucho.com/resin-4.0/admin/resin-admin-console.xtp Odd, when I untar resin-pro-4.0.5 and look in the php/admin directory from the example block on the second link above: web-app id=/resin-admin root-directory=${resin.home}/php/admin The php directory doesn't exist. Let me hunt around a bit now that I know it should be there somewhere. 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] Resin-Pro-4.0.5 Admin
On 3/24/2010 2:00 PM, Bill Au wrote: It is part of resin 4.x. Make sure you have the following in your resin.xml: web-app id=/resin-admin root-directory=${resin.root}/doc/admin prologue resin:set var=resin_admin_external value=false/ resin:set var=resin_admin_insecure value=true/ /prologue /web-app If you want to use a hostname other than localhost to access the UI, then you will have to set resin_admin_external to true. I have been looking at it since I am upgrading from 3.0 to 4 too. It looks very good. Be sure to check it out. It is nice that a lot of monitoring stuff that we have had to add on top of resin is now part of it. Bill On Wed, Mar 24, 2010 at 2:15 PM, Rick Mann rm...@latencyzero.com mailto:rm...@latencyzero.com wrote: On Mar 24, 2010, at 09:07:07, Aaron Freeman wrote: Since we are upgrading from pro-3.0.23 to pro-4.0.5, we thought we would take advantage of the resin-admin stuff. However the docs aren't clear on how that's supposed to happen. This page says nothing about what to install: http://caucho.com/resin-4.0/admin/resin-admin.xtp And this page seems to elude that I have to install another product? I could have sworn we had this working in 4.0.0 without installing Quercus. http://caucho.com/resin-4.0/admin/resin-admin-console.xtp Quercus is part of Resin 4.x. You get it for free. -- Rick Ahhh ... that's slightly different than the documentation. It says /php/admin and yours says /doc/admin. Let me try that. Scott, you might want to have the documentation updated if that's the difference. Thanks, Aaron ___ resin-interest mailing list resin-interest@caucho.com http://maillist.caucho.com/mailman/listinfo/resin-interest
Re: [Resin-interest] Resin-Pro-4.0.5 Admin
Aaron Freeman wrote: Ahhh ... that's slightly different than the documentation. It says /php/admin and yours says /doc/admin. Let me try that. Scott, you might want to have the documentation updated if that's the difference. Thanks. I just updated it. -- Scott 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] CanDI unable to inject @Stateless
Thanks , but I tried some settings in 'ejb-jar.xml' , but still cannot get the Stateless bean from JNDI , Here are some of my settings : !-- session ejb-nameSession/ejb-name ejb-classdata.PersonServiceImpl/ejb-class ejb-ref ejb-ref-nameejb/personService/ejb-ref-name ejb-ref-typeSession/ejb-ref-type homedata.PersonService/home remotedata.PersonServiceImpl/remote /ejb-ref /session BeanType[com.caucho.config.types.DescriptionGroupConfig]: conflicting attribute for 'xxx' between SetterAttribute NameNotFoundException: java:comp/env/ejb/personService -- !-- session ejb-namepersonService/ejb-name ejb-classdata.PersonServiceImpl/ejb-class ejb-local-ref ejb-ref-nameejb/personService/ejb-ref-name ejb-ref-typeSession/ejb-ref-type local-homedata.PersonService/local-home localdata.PersonServiceImpl/local /ejb-local-ref /session EjbLocalRef[ejb/personService, null, null] init NameNotFoundException: java:comp/env/ejb/personService -- !-- session ejb-namepersonService/ejb-name homedata.PersonService/home remotedata.PersonServiceImpl/remote ejb-classdata.PersonServiceImpl/ejb-class session-typeStateless/session-type transaction-typeBean/transaction-type /session Not working com.caucho.config.ConfigException: 'data.PersonService' must extend EJBHome. home interfaces must extend javax.ejb.EJBHome. -- Is there any valid settings I can refer to (I've searched a lot ) ? 2010/3/25 Scott Ferguson f...@caucho.com smallufo wrote: 2010/3/25 Scott Ferguson f...@caucho.com mailto:f...@caucho.com Thank you , it works ! public class HelloServlet extends HttpServlet { @EJB / @Inject both works private PersonService personService; Now I can inject into Servlet with @EJB and @Inject , though I don't know the difference , the console dump seems nothing different. Well, you can think of @EJB as the obsolete JavaEE injection method, although @EJB does have JNDI side-effects. BTW , what is the populated JNDI name of the Stateless Bean ? in my code : @Stateless(mappedName=ejb/personService) @Local(PersonService.class) public class PersonServiceImpl implements PersonService , Serializable Where goes wrong ? Isn't the mappedName=ejb/personService hooked into java:comp/env ? Why resin (4.0.4) throws NameNotFoundException ? This is kind of complicated. Technically (according to the spec), the @Stateless does not register with JNDI at all - that's a Resin-specific feature. The JNDI registration occurs either with an ejb-ref or a @EJB annotation somewhere. But that's a part of the spec that we haven't completely tested yet. We have an open bug at http://bugs.caucho.com/view.php?id=3964 to restore Resin's old behavior for backward compatibility. -- Scott ___ 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] 4.0.0 on osx deploy problem
On Mar 22, 2010, at 12:16 , Scott Ferguson wrote: Jeff Schnitzer wrote: FWIW, Resin on OSX seems to work fine despite the error messages. My understanding is that this is a known issue with the Apple JDK, but it doesn't hurt anything. I submitted this as bug to Apple in September 2009. It was marked as a duplicate of bug #7007567. It doesn't seem to cause a problem, but it is disturbing. If you want Apple to give it a higher priority for fixing, your best bet is to submit your own bug on it, even mentioning that it's a duplicate of #7007567. Apple uses the number of reports of a particular bug to help them prioritize what gets fixed first. Rob -- Scott Jeff On Sat, Mar 20, 2010 at 6:12 AM, Jon Stevens latch...@gmail.com wrote: Yes, I can't remember what the solution was. =( Sorry! jon On Sat, Mar 20, 2010 at 2:16 AM, Rick Mann rm...@latencyzero.com wrote: John, did you ever find an answer to this? I'm getting it, too. On Jun 29, 2009, at 22:50:52, Jon Stevens wrote: Here is another problem. When deploying subetha on osx using the apple jdk 6, I get the stack trace below. When deplying subetha on osx using the landon fuller soylatte jdk, things work fine. I get a different set of errors using jdk5 which relate to the resin servlets apparently being compiled with jdk6. [16][ ~/checkout/resin-4.0.0 ]% ./bin/resin.sh Intentionally suppressing recursive invocation exception! java.lang.IllegalStateException: recursive invocation at java.lang.ClassLoader.initSystemClassLoader(ClassLoader.java:1394) at java.lang.ClassLoader.getSystemClassLoader(ClassLoader.java:1377) at sun.security.jca.ProviderConfig$1.run(ProviderConfig.java:64) at java.security.AccessController.doPrivileged(Native Method) at sun.security.jca.ProviderConfig.getLock(ProviderConfig.java:62) at sun.security.jca.ProviderConfig.getProvider(ProviderConfig.java:187) at sun.security.jca.ProviderList.getProvider(ProviderList.java:215) at sun.security.jca.ProviderList.getService(ProviderList.java:313) at sun.security.jca.GetInstance.getInstance(GetInstance.java:140) at java.security.cert.CertificateFactory.getInstance(CertificateFactory.java:148) at sun.security.pkcs.PKCS7.parseSignedData(PKCS7.java:244) at sun.security.pkcs.PKCS7.parse(PKCS7.java:141) at sun.security.pkcs.PKCS7.parse(PKCS7.java:110) at sun.security.pkcs.PKCS7.init(PKCS7.java:92) at sun.security.util.SignatureFileVerifier.init(SignatureFileVerifier.java:80) at java.util.jar.JarVerifier.processEntry(JarVerifier.java:256) at java.util.jar.JarVerifier.update(JarVerifier.java:188) at java.util.jar.JarFile.initializeVerifier(JarFile.java:321) at java.util.jar.JarFile.getInputStream(JarFile.java:386) at sun.misc.JarIndex.getJarIndex(JarIndex.java:99) at sun.misc.URLClassPath$JarLoader$1.run(URLClassPath.java:606) at java.security.AccessController.doPrivileged(Native Method) at sun.misc.URLClassPath$JarLoader.ensureOpen(URLClassPath.java:597) at sun.misc.URLClassPath$JarLoader.init(URLClassPath.java:581) at sun.misc.URLClassPath$3.run(URLClassPath.java:331) at java.security.AccessController.doPrivileged(Native Method) at sun.misc.URLClassPath.getLoader(URLClassPath.java:320) at sun.misc.URLClassPath.getLoader(URLClassPath.java:297) at sun.misc.URLClassPath.getResource(URLClassPath.java:167) at java.net.URLClassLoader$1.run(URLClassLoader.java:192) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:188) at sun.misc.Launcher$ExtClassLoader.findClass(Launcher.java:244) at java.lang.ClassLoader.loadClass(ClassLoader.java:319) at java.lang.ClassLoader.loadClass(ClassLoader.java:309) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:330) at java.lang.ClassLoader.loadClass(ClassLoader.java:254) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:402) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:247) at java.lang.SystemClassLoaderAction.run(ClassLoader.java:2150) at java.security.AccessController.doPrivileged(Native Method) at java.lang.ClassLoader.initSystemClassLoader(ClassLoader.java:1407) at java.lang.ClassLoader.getSystemClassLoader(ClassLoader.java:1377) Intentionally suppressing recursive invocation exception! java.lang.IllegalStateException: recursive invocation at java.lang.ClassLoader.initSystemClassLoader(ClassLoader.java:1394) at java.lang.ClassLoader.getSystemClassLoader(ClassLoader.java:1377) at sun.security.jca.ProviderConfig$3.run(ProviderConfig.java:231) at java.security.AccessController.doPrivileged(Native Method) at sun.security.jca.ProviderConfig.doLoadProvider(ProviderConfig.java:225) at