After a fresh install of Hudson 2.90 installation running in a Tomcat 6
instance I tried to install some plugins. When I try to install any plugin I get: javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:513) at sun.net.www.protocol.http.HttpURLConnection$6.run(HttpURLConnection.java:1345) at java.security.AccessController.doPrivileged(Native Method) at sun.net.www.protocol.http.HttpURLConnection.getChainedException(HttpURLConnection.java:1339) at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:993) at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:234) at hudson.model.UpdateCenter$UpdateCenterConfiguration.download(UpdateCenter.java:563) at hudson.model.UpdateCenter$DownloadJob.run(UpdateCenter.java:754) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:619) Any ideas? -- - Ed --------------------------------------------------------------------- To unsubscribe, e-mail: [hidden email] For additional commands, e-mail: [hidden email] |
Administrator
|
Which JVM do you run Hudson on? Ed Young wrote: > After a fresh install of Hudson 2.90 installation running in a Tomcat 6 > instance I tried to install some plugins. When I try to install any > plugin I get: > > javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected > error: java.security.InvalidAlgorithmParameterException: the > trustAnchors parameter must be non-empty > > at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) > at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) > at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) > at java.lang.reflect.Constructor.newInstance(Constructor.java:513) > at sun.net.www.protocol.http.HttpURLConnection$6.run(HttpURLConnection.java:1345) > at java.security.AccessController.doPrivileged(Native Method) > at sun.net.www.protocol.http.HttpURLConnection.getChainedException(HttpURLConnection.java:1339) > at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:993) > at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:234) > at hudson.model.UpdateCenter$UpdateCenterConfiguration.download(UpdateCenter.java:563) > at hudson.model.UpdateCenter$DownloadJob.run(UpdateCenter.java:754) > at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) > at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) > at java.util.concurrent.FutureTask.run(FutureTask.java:138) > at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) > at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) > at java.lang.Thread.run(Thread.java:619) > > Any ideas? > -- Kohsuke Kawaguchi Sun Microsystems http://weblogs.java.net/blog/kohsuke/ |
Thanks for the reply
Tomcat Version JVM Version Apache Tomcat/6.0.18 1.6.0_11-b03 JVM Vendor OS Name OS Version OS Architecture Sun Microsystems Inc. Linux 2.6.18-53.el5 amd64 On Fri, Mar 13, 2009 at 11:09 AM, Kohsuke Kawaguchi <[hidden email]> wrote: > > Which JVM do you run Hudson on? > > Ed Young wrote: >> >> After a fresh install of Hudson 2.90 installation running in a Tomcat 6 >> instance I tried to install some plugins. When I try to install any >> plugin I get: >> >> javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected >> error: java.security.InvalidAlgorithmParameterException: the >> trustAnchors parameter must be non-empty >> >> at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) >> at >> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) >> at >> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) >> at java.lang.reflect.Constructor.newInstance(Constructor.java:513) >> at >> sun.net.www.protocol.http.HttpURLConnection$6.run(HttpURLConnection.java:1345) >> at java.security.AccessController.doPrivileged(Native Method) >> at >> sun.net.www.protocol.http.HttpURLConnection.getChainedException(HttpURLConnection.java:1339) >> at >> sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:993) >> at >> sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:234) >> at >> hudson.model.UpdateCenter$UpdateCenterConfiguration.download(UpdateCenter.java:563) >> at hudson.model.UpdateCenter$DownloadJob.run(UpdateCenter.java:754) >> at >> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) >> at >> java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) >> at java.util.concurrent.FutureTask.run(FutureTask.java:138) >> at >> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) >> at >> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) >> at java.lang.Thread.run(Thread.java:619) >> >> Any ideas? >> > > > -- > Kohsuke Kawaguchi > Sun Microsystems http://weblogs.java.net/blog/kohsuke/ > -- - Ed --------------------------------------------------------------------- To unsubscribe, e-mail: [hidden email] For additional commands, e-mail: [hidden email] |
Administrator
|
Ed Young wrote:
> Thanks for the reply > > Tomcat Version JVM Version > Apache Tomcat/6.0.18 1.6.0_11-b03 > > JVM Vendor OS Name OS Version OS Architecture > Sun Microsystems Inc. Linux 2.6.18-53.el5 amd64 Is this OpenJDK? I found this on Google: http://www.archivum.info/linux.debian.bugs.dist/2008-08/msg02085.html Can you install Java from http://java.sun.com/ to see if that fixes it? Regardless, the developer that wrote this HttpURLConnection.getChainedException code is an idiot. It totally clobbers the exception stack trace, and it hides the real cause. > On Fri, Mar 13, 2009 at 11:09 AM, Kohsuke Kawaguchi > <[hidden email]> wrote: >> >> Which JVM do you run Hudson on? >> >> Ed Young wrote: >>> >>> After a fresh install of Hudson 2.90 installation running in a Tomcat 6 >>> instance I tried to install some plugins. When I try to install any >>> plugin I get: >>> >>> javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected >>> error: java.security.InvalidAlgorithmParameterException: the >>> trustAnchors parameter must be non-empty >>> >>> at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) >>> ? ? ? at >>> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) >>> ? ? ? at >>> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) >>> ? ? ? at java.lang.reflect.Constructor.newInstance(Constructor.java:513) >>> ? ? ? at >>> sun.net.www.protocol.http.HttpURLConnection$6.run(HttpURLConnection.java:1345) >>> ? ? ? at java.security.AccessController.doPrivileged(Native Method) >>> ? ? ? at >>> sun.net.www.protocol.http.HttpURLConnection.getChainedException(HttpURLConnection.java:1339) >>> ? ? ? at >>> sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:993) >>> ? ? ? at >>> sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:234) >>> ? ? ? at >>> hudson.model.UpdateCenter$UpdateCenterConfiguration.download(UpdateCenter.java:563) >>> ? ? ? at hudson.model.UpdateCenter$DownloadJob.run(UpdateCenter.java:754) >>> ? ? ? at >>> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) >>> ? ? ? at >>> java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) >>> ? ? ? at java.util.concurrent.FutureTask.run(FutureTask.java:138) >>> ? ? ? at >>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) >>> ? ? ? at >>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) >>> ? ? ? at java.lang.Thread.run(Thread.java:619) >>> >>> Any ideas? >>> >> >> >> -- >> Kohsuke Kawaguchi >> Sun Microsystems ? ? ? ? ? ? ? ? ? http://weblogs.java.net/blog/kohsuke/ >> > > > -- Kohsuke Kawaguchi Sun Microsystems http://weblogs.java.net/blog/kohsuke/ |
Administrator
|
Kohsuke Kawaguchi wrote:
> Ed Young wrote: >> Thanks for the reply >> >> Tomcat Version JVM Version >> Apache Tomcat/6.0.18 1.6.0_11-b03 >> >> JVM Vendor OS Name OS Version OS Architecture >> Sun Microsystems Inc. Linux 2.6.18-53.el5 amd64 > > Is this OpenJDK? > > I found this on Google: > http://www.archivum.info/linux.debian.bugs.dist/2008-08/msg02085.html > > Can you install Java from http://java.sun.com/ to see if that fixes it? > > Regardless, the developer that wrote this > HttpURLConnection.getChainedException code is an idiot. It totally > clobbers the exception stack trace, and it hides the real cause. -- Kohsuke Kawaguchi Sun Microsystems http://weblogs.java.net/blog/kohsuke/ |
In reply to this post by Kohsuke Kawaguchi
I'm running a RedHat 5SE platform, and I think the JDK was installed as a sun downloaded binary rpm object. Here's what java -version returns:
[red@wolverine ~]$ java -version java version "1.6.0_11" Java(TM) SE Runtime Environment (build 1.6.0_11-b03) Java HotSpot(TM) 64-Bit Server VM (build 11.0-b16, mixed mode) If it's the JDK, it's the only issue I've see so far with it... Also, Hudson works fine (so far) with only this problem. It's very consistent though. ? On Fri, Mar 13, 2009 at 4:23 PM, Kohsuke Kawaguchi <[hidden email]> wrote:
-- - Ed |
Administrator
|
Ed Young wrote:
> I'm running a RedHat 5SE platform, and I think the JDK was installed as a > sun downloaded binary rpm object. Here's what java -version returns: > > [red@wolverine ~]$ java -version > java version "1.6.0_11" > Java(TM) SE Runtime Environment (build 1.6.0_11-b03) > Java HotSpot(TM) 64-Bit Server VM (build 11.0-b16, mixed mode) > > If it's the JDK, it's the only issue I've see so far with it... Sorry, the only issue in JDK is that it's making it impossible for us to get to the root cause of the problem. The root cause is probably elsewhere. > Also, Hudson works fine (so far) with only this problem. It's very > consistent though. If you could, please step execute the hudson.model.UpdateCenter$UpdateCenterConfiguration.download method, and that should help us find where the root cause is happening. Also, Google seem to have a lot of postings with this error message, maybe some of them show how they resolved it. > > ? > > > On Fri, Mar 13, 2009 at 4:23 PM, Kohsuke Kawaguchi < > [hidden email]> wrote: > >> Ed Young wrote: >> >>> Thanks for the reply >>> >>> Tomcat Version JVM Version >>> Apache Tomcat/6.0.18 1.6.0_11-b03 >>> >>> JVM Vendor OS Name OS Version OS >>> Architecture >>> Sun Microsystems Inc. Linux 2.6.18-53.el5 amd64 >>> >> >> Is this OpenJDK? >> >> I found this on Google: >> http://www.archivum.info/linux.debian.bugs.dist/2008-08/msg02085.html >> >> Can you install Java from http://java.sun.com/ to see if that fixes it? >> >> Regardless, the developer that wrote this >> HttpURLConnection.getChainedException code is an idiot. It totally clobbers >> the exception stack trace, and it hides the real cause. >> >> >> >> On Fri, Mar 13, 2009 at 11:09 AM, Kohsuke Kawaguchi >>> <[hidden email]> wrote: >>> >>>> >>>> Which JVM do you run Hudson on? >>>> >>>> Ed Young wrote: >>>> >>>>> >>>>> After a fresh install of Hudson 2.90 installation running in a Tomcat 6 >>>>> instance I tried to install some plugins. When I try to install any >>>>> plugin I get: >>>>> >>>>> javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected >>>>> error: java.security.InvalidAlgorithmParameterException: the >>>>> trustAnchors parameter must be non-empty >>>>> >>>>> at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) >>>>> ? ? ? at >>>>> >>>>> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) >>>>> ? ? ? at >>>>> >>>>> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) >>>>> ? ? ? at java.lang.reflect.Constructor.newInstance(Constructor.java:513) >>>>> ? ? ? at >>>>> >>>>> sun.net.www.protocol.http.HttpURLConnection$6.run(HttpURLConnection.java:1345) >>>>> ? ? ? at java.security.AccessController.doPrivileged(Native Method) >>>>> ? ? ? at >>>>> >>>>> sun.net.www.protocol.http.HttpURLConnection.getChainedException(HttpURLConnection.java:1339) >>>>> ? ? ? at >>>>> >>>>> sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:993) >>>>> ? ? ? at >>>>> >>>>> sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:234) >>>>> ? ? ? at >>>>> >>>>> hudson.model.UpdateCenter$UpdateCenterConfiguration.download(UpdateCenter.java:563) >>>>> ? ? ? at >>>>> hudson.model.UpdateCenter$DownloadJob.run(UpdateCenter.java:754) >>>>> ? ? ? at >>>>> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) >>>>> ? ? ? at >>>>> java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) >>>>> ? ? ? at java.util.concurrent.FutureTask.run(FutureTask.java:138) >>>>> ? ? ? at >>>>> >>>>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) >>>>> ? ? ? at >>>>> >>>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) >>>>> ? ? ? at java.lang.Thread.run(Thread.java:619) >>>>> >>>>> Any ideas? >>>>> >>>>> >>>> >>>> -- >>>> Kohsuke Kawaguchi >>>> Sun Microsystems ? ? ? ? ? ? ? ? ? http://weblogs.java.net/blog/kohsuke/ >>>> >>>> >>> >>> >>> >> >> -- >> Kohsuke Kawaguchi >> Sun Microsystems http://weblogs.java.net/blog/kohsuke/ >> > > > -- Kohsuke Kawaguchi Sun Microsystems http://weblogs.java.net/blog/kohsuke/ |
How do I step execute the hudson.model.UpdateCenter$UpdateCenterConfiguration.download method?
To do that do I need to run hudson from a source distribution? I'm running Hudson as a war file deployed to Tomcat 1.6. By the way, I'm enabling security delegated to the tomcat instance that Hudson is running under, if that's relevant. On Fri, Mar 13, 2009 at 6:48 PM, Kohsuke Kawaguchi <[hidden email]> wrote:
-- - Ed |
Administrator
|
Ed Young wrote:
> How do I step execute the > hudson.model.UpdateCenter$UpdateCenterConfiguration.download method? > To do that do I need to run hudson from a source distribution? You need to download Hudson source bundle, which is on the documents&files section of the project, I think. See https://hudson.dev.java.net/servlets/ProjectDocumentList?folderID=6553&expandFolder=6553&folderID=0 You also need a Java IDE. > I'm running Hudson as a war file deployed to Tomcat 1.6. > > By the way, I'm enabling security delegated to the tomcat instance that > Hudson is running under, if that's relevant. It may be or may not be relevant. Hard to say. > On Fri, Mar 13, 2009 at 6:48 PM, Kohsuke Kawaguchi < > [hidden email]> wrote: > >> Ed Young wrote: >> >>> I'm running a RedHat 5SE platform, and I think the JDK was installed as a >>> sun downloaded binary rpm object. Here's what java -version returns: >>> >>> [red@wolverine ~]$ java -version >>> java version "1.6.0_11" >>> Java(TM) SE Runtime Environment (build 1.6.0_11-b03) >>> Java HotSpot(TM) 64-Bit Server VM (build 11.0-b16, mixed mode) >>> >>> If it's the JDK, it's the only issue I've see so far with it... >>> >> >> Sorry, the only issue in JDK is that it's making it impossible for us to >> get to the root cause of the problem. >> >> The root cause is probably elsewhere. >> >> Also, Hudson works fine (so far) with only this problem. It's very >>> consistent though. >>> >> >> If you could, please step execute the >> hudson.model.UpdateCenter$UpdateCenterConfiguration.download method, and >> that should help us find where the root cause is happening. >> >> Also, Google seem to have a lot of postings with this error message, maybe >> some of them show how they resolved it. >> >> >> >>> ? >>> >>> >>> On Fri, Mar 13, 2009 at 4:23 PM, Kohsuke Kawaguchi < >>> [hidden email]> wrote: >>> >>> Ed Young wrote: >>>> >>>> Thanks for the reply >>>>> >>>>> Tomcat Version JVM Version >>>>> Apache Tomcat/6.0.18 1.6.0_11-b03 >>>>> >>>>> JVM Vendor OS Name OS Version OS >>>>> Architecture >>>>> Sun Microsystems Inc. Linux 2.6.18-53.el5 amd64 >>>>> >>>>> >>>> Is this OpenJDK? >>>> >>>> I found this on Google: >>>> http://www.archivum.info/linux.debian.bugs.dist/2008-08/msg02085.html >>>> >>>> Can you install Java from http://java.sun.com/ to see if that fixes it? >>>> >>>> Regardless, the developer that wrote this >>>> HttpURLConnection.getChainedException code is an idiot. It totally >>>> clobbers >>>> the exception stack trace, and it hides the real cause. >>>> >>>> >>>> >>>> On Fri, Mar 13, 2009 at 11:09 AM, Kohsuke Kawaguchi >>>> >>>>> <[hidden email]> wrote: >>>>> >>>>> >>>>>> Which JVM do you run Hudson on? >>>>>> >>>>>> Ed Young wrote: >>>>>> >>>>>> >>>>>>> After a fresh install of Hudson 2.90 installation running in a Tomcat >>>>>>> 6 >>>>>>> instance I tried to install some plugins. When I try to install any >>>>>>> plugin I get: >>>>>>> >>>>>>> javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected >>>>>>> error: java.security.InvalidAlgorithmParameterException: the >>>>>>> trustAnchors parameter must be non-empty >>>>>>> >>>>>>> at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native >>>>>>> Method) >>>>>>> ? ? ? at >>>>>>> >>>>>>> >>>>>>> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) >>>>>>> ? ? ? at >>>>>>> >>>>>>> >>>>>>> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) >>>>>>> ? ? ? at >>>>>>> java.lang.reflect.Constructor.newInstance(Constructor.java:513) >>>>>>> ? ? ? at >>>>>>> >>>>>>> >>>>>>> sun.net.www.protocol.http.HttpURLConnection$6.run(HttpURLConnection.java:1345) >>>>>>> ? ? ? at java.security.AccessController.doPrivileged(Native Method) >>>>>>> ? ? ? at >>>>>>> >>>>>>> >>>>>>> sun.net.www.protocol.http.HttpURLConnection.getChainedException(HttpURLConnection.java:1339) >>>>>>> ? ? ? at >>>>>>> >>>>>>> >>>>>>> sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:993) >>>>>>> ? ? ? at >>>>>>> >>>>>>> >>>>>>> sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:234) >>>>>>> ? ? ? at >>>>>>> >>>>>>> >>>>>>> hudson.model.UpdateCenter$UpdateCenterConfiguration.download(UpdateCenter.java:563) >>>>>>> ? ? ? at >>>>>>> hudson.model.UpdateCenter$DownloadJob.run(UpdateCenter.java:754) >>>>>>> ? ? ? at >>>>>>> >>>>>>> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) >>>>>>> ? ? ? at >>>>>>> java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) >>>>>>> ? ? ? at java.util.concurrent.FutureTask.run(FutureTask.java:138) >>>>>>> ? ? ? at >>>>>>> >>>>>>> >>>>>>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) >>>>>>> ? ? ? at >>>>>>> >>>>>>> >>>>>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) >>>>>>> ? ? ? at java.lang.Thread.run(Thread.java:619) >>>>>>> >>>>>>> Any ideas? >>>>>>> >>>>>>> >>>>>>> >>>>>> -- >>>>>> Kohsuke Kawaguchi >>>>>> Sun Microsystems ? ? ? ? ? ? ? ? ? >>>>>> http://weblogs.java.net/blog/kohsuke/ >>>>>> >>>>>> >>>>>> >>>>> >>>>> >>>>> >>>> -- >>>> Kohsuke Kawaguchi >>>> Sun Microsystems http://weblogs.java.net/blog/kohsuke/ >>>> >>>> >>> >>> >>> >> >> -- >> Kohsuke Kawaguchi >> Sun Microsystems http://weblogs.java.net/blog/kohsuke/ >> > > > -- Kohsuke Kawaguchi Sun Microsystems http://weblogs.java.net/blog/kohsuke/ |
On the debian/ubuntu distribution this may be caused by the missing java certificates
On a lenny box the package is not available, I did the following: wget http://ftp.de.debian.org/debian/pool/main/c/ca-certificates-java/ca-certificates-java_20081028_all.deb dpkg -i ca-certificates-java_20081028_all.deb and I success to load plugins with the update center.
|
Free forum by Nabble | Edit this page |