You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@jackrabbit.apache.org by jimy page <ji...@gmail.com> on 2019/06/24 11:19:16 UTC

How to create RepositoryContext / use Statistics Servlet

I have jackrabbit runnig with repo /users/xyz/repo1
Inside this I have repository.xml


I want to call org.apache.jackrabbit.servlet.jackrabbit.StatisticsServlet
to show different metrices.


*But the problem I am facing here is: --> In order to create
RepositoryConfig, I need to pass in the repo folder path, but Jackrabbit
process is already kept it locked. What is the alternative here ?*

*I can copy over "/Users/xyz/repository/", to some other folder and use
that, but my question is in that case will I get all the repository
information ?*

----> Here is my sample code

HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
    String klass = RepositoryContext.class.getName();
    String name = getServletConfig().getInitParameter(klass);
    if (name == null) {
      name = klass;
    }

//    RepositoryContext context = (RepositoryContext)
//        getServletContext().getAttribute(name);
    RepositoryConfig config = null;
    try {
      config = RepositoryConfig.create(new File("/Users/xyz/repository/"));
      //**some try
      // **some try ends here
    } catch (ConfigurationException e) {
      e.printStackTrace();
    }
    RepositoryContext context = null;
    try {
      context = RepositoryContext.create(config);

Re: How to create RepositoryContext / use Statistics Servlet

Posted by jimy page <ji...@gmail.com>.
Hi Woonsan

I can work with that.

But our requirement is slightly different, we will not be able to embed
jackrabbit inside the webapp.
So I will have to deploy jackrabbit separately.

As per our previous discussion,

There are 2 servlets defined in web.xml of my jackrabbit-webapp module.
<servlet-class>org.apache.jackrabbit.j2ee.RepositoryAccessServlet</servlet-class>
<servlet-class>org.apache.jackrabbit.j2ee.RepositoryStartupServlet</servlet-class>


Are you asking me to discard this and use
org.apache.jackrabbit.servlet.jackrabbit.JackrabbitRepositoryServlet
instead ?

Thanks
Jimmy

On Tue, Jun 25, 2019 at 6:10 PM Woonsan Ko <wo...@apache.org> wrote:

> On Tue, Jun 25, 2019 at 1:47 AM jimy page <ji...@gmail.com> wrote:
> >
> > Hi Woonsan
> >
> > Are you saying we need to use
> >
> http://svn.apache.org/repos/asf/jackrabbit/site/live/jcr/embedded-repository.html
> > this deployment model instead of current one I am using ?
>
> Yes, that's what I think is the solution as described in the "Embedded
> repository in a web application" section.
> If you configure the StatisticsServlet in the web.xml where
> org.apache.jackrabbit.servlet.jackrabbit.JackrabbitRepositoryServlet
> is defined, the JackrabbitRepositoryServlet will expose the
> RepositoryContext through servletContext, and so the StatisticsServlet
> won't fail.
>
> "repository lock" happens when you initialize a new repository while
> the data directory is already used by another repository instance. You
> shouldn't try to recreate a repository with the data directory.
> StatisticsServlet just tries to retrieve the RepositoryContext object
> initialized by the existing repository. Don't need to customize
> StatisticsServlet to recreate a repository with RepositoryConfig.
>
> Regards,
>
> Woonsan
>
> >
> > Currently I am deploying jackrabbit-webapp.
> >
> > Thanks
> > Jimmy
> >
> > On Tue, Jun 25, 2019 at 9:15 AM jimy page <ji...@gmail.com> wrote:
> >
> > > Hi Woonsan
> > >
> > > Thanks for your input.
> > >
> > > So I can write my custom webapplication with
> JackrabbitRepositoryServlet.
> > > But I will still need to deploy jackrabbit-webapp for all the other
> > > functionalities.
> > > In that case will not my custom-app still suffer from repository lock
> as
> > > jackrabbit-webapp will still have lock on the repo ?
> > >
> > > Regards
> > > Jimmy
> > >
> > > On Mon, Jun 24, 2019 at 9:20 PM Woonsan Ko <wo...@apache.org> wrote:
> > >
> > >> On Mon, Jun 24, 2019 at 11:02 AM jimy page <ji...@gmail.com>
> wrote:
> > >> >
> > >> > Thanks Woonsan for your quick response.
> > >> >
> > >> > I tried configuring StatisticsServlet. What I did was, in
> > >> jackrabbit-webapp
> > >> > I have added StatisticsServlet.
> > >> > But RepositoryContext context =
> > >> >
> (RepositoryContext)this.getServletContext().getAttribute(name);----> at
> > >> > this line I am unable to retrievecontext.
> > >> > This is always coming null.
> > >>
> > >> jackrabbit-webapp doesn't seem to expose a RepositoryContext. So, I
> > >> don't think you can use StatisticsServlet with it.
> > >> You can perhaps use JackrabbitRepositoryServlet [1] in a custom web
> > >> application to initialize your repository instance instead of
> > >> jackrabbit-webapp. Then RepositoryContext will become available.
> > >>
> > >> Regards,
> > >>
> > >> Woonsan
> > >>
> > >> [1]
> > >>
> http://jackrabbit.apache.org/api/trunk/org/apache/jackrabbit/servlet/jackrabbit/JackrabbitRepositoryServlet.html
> > >>
> > >> >
> > >> > So I did it in a hacky way, created a new MetricsServlet overriding
> > >> > StatisticsServlet's methods.
> > >> >
> > >> >
> > >> > So my question is, what is the best way to retrieve RepositoryConfig
> > >> object
> > >> > ?
> > >> >
> > >> > The following code is giving me stat for newly created repo:
> > >> >
> > >> > RepositoryConfig config = null;
> > >> >     try {
> > >> >       config = RepositoryConfig.create(new
> > >> File("/Users/xxxxx/repo2"));//
> > >> >       //**some try
> > >> >       // **some try ends here
> > >> >     } catch (ConfigurationException e) {
> > >> >       e.printStackTrace();
> > >> >     }
> > >> >     RepositoryContext context = null;
> > >> >     try {
> > >> >       context = RepositoryContext.create(config);
> > >> >       if (context != null) {
> > >> >         RepositoryStatistics statistics =
> > >> context.getRepositoryStatistics();
> > >> > ==========================>
> > >> >
> > >> > *I need help in how to instantiate RepositoryConfig, which will
> point to
> > >> > the same repo that my jackrabbit instance is using.*
> > >> >
> > >> > *There is no documentation found for this :(.*
> > >> >
> > >> >
> > >> >
> > >> > *Thanks *
> > >> > *Jimy*
> > >> >
> > >> >
> > >> >
> > >> > On Mon, Jun 24, 2019 at 7:01 PM Woonsan Ko <wo...@apache.org>
> wrote:
> > >> >
> > >> > > On Mon, Jun 24, 2019 at 7:19 AM jimy page <ji...@gmail.com>
> > >> wrote:
> > >> > > >
> > >> > > > I have jackrabbit runnig with repo /users/xyz/repo1
> > >> > > > Inside this I have repository.xml
> > >> > > >
> > >> > > >
> > >> > > > I want to call
> > >> org.apache.jackrabbit.servlet.jackrabbit.StatisticsServlet
> > >> > > > to show different metrices.
> > >> > > >
> > >> > > >
> > >> > > > *But the problem I am facing here is: --> In order to create
> > >> > > > RepositoryConfig, I need to pass in the repo folder path, but
> > >> Jackrabbit
> > >> > > > process is already kept it locked. What is the alternative here
> ?*
> > >> > > >
> > >> > > > *I can copy over "/Users/xyz/repository/", to some other folder
> and
> > >> use
> > >> > > > that, but my question is in that case will I get all the
> repository
> > >> > > > information ?*
> > >> > >
> > >> > > I don't think so.
> > >> > > If you copy the data such as directories and *recreate* a. new
> > >> > > repository instance, it will show new statistics of the new
> running
> > >> > > repository.
> > >> > > I think you should just configure the StatisticsServlet on the
> same
> > >> > > web application which initializes the repository.
> > >> > >
> > >> > > Regards,
> > >> > >
> > >> > > Woonsan
> > >> > >
> > >> > > >
> > >> > > > ----> Here is my sample code
> > >> > > >
> > >> > > > HttpServletRequest request, HttpServletResponse response)
> > >> > > >       throws ServletException, IOException {
> > >> > > >     String klass = RepositoryContext.class.getName();
> > >> > > >     String name = getServletConfig().getInitParameter(klass);
> > >> > > >     if (name == null) {
> > >> > > >       name = klass;
> > >> > > >     }
> > >> > > >
> > >> > > > //    RepositoryContext context = (RepositoryContext)
> > >> > > > //        getServletContext().getAttribute(name);
> > >> > > >     RepositoryConfig config = null;
> > >> > > >     try {
> > >> > > >       config = RepositoryConfig.create(new
> > >> > > File("/Users/xyz/repository/"));
> > >> > > >       //**some try
> > >> > > >       // **some try ends here
> > >> > > >     } catch (ConfigurationException e) {
> > >> > > >       e.printStackTrace();
> > >> > > >     }
> > >> > > >     RepositoryContext context = null;
> > >> > > >     try {
> > >> > > >       context = RepositoryContext.create(config);
> > >> > >
> > >>
> > >
>

Re: How to create RepositoryContext / use Statistics Servlet

Posted by Woonsan Ko <wo...@apache.org>.
On Tue, Jun 25, 2019 at 1:47 AM jimy page <ji...@gmail.com> wrote:
>
> Hi Woonsan
>
> Are you saying we need to use
> http://svn.apache.org/repos/asf/jackrabbit/site/live/jcr/embedded-repository.html
> this deployment model instead of current one I am using ?

Yes, that's what I think is the solution as described in the "Embedded
repository in a web application" section.
If you configure the StatisticsServlet in the web.xml where
org.apache.jackrabbit.servlet.jackrabbit.JackrabbitRepositoryServlet
is defined, the JackrabbitRepositoryServlet will expose the
RepositoryContext through servletContext, and so the StatisticsServlet
won't fail.

"repository lock" happens when you initialize a new repository while
the data directory is already used by another repository instance. You
shouldn't try to recreate a repository with the data directory.
StatisticsServlet just tries to retrieve the RepositoryContext object
initialized by the existing repository. Don't need to customize
StatisticsServlet to recreate a repository with RepositoryConfig.

Regards,

Woonsan

>
> Currently I am deploying jackrabbit-webapp.
>
> Thanks
> Jimmy
>
> On Tue, Jun 25, 2019 at 9:15 AM jimy page <ji...@gmail.com> wrote:
>
> > Hi Woonsan
> >
> > Thanks for your input.
> >
> > So I can write my custom webapplication with JackrabbitRepositoryServlet.
> > But I will still need to deploy jackrabbit-webapp for all the other
> > functionalities.
> > In that case will not my custom-app still suffer from repository lock as
> > jackrabbit-webapp will still have lock on the repo ?
> >
> > Regards
> > Jimmy
> >
> > On Mon, Jun 24, 2019 at 9:20 PM Woonsan Ko <wo...@apache.org> wrote:
> >
> >> On Mon, Jun 24, 2019 at 11:02 AM jimy page <ji...@gmail.com> wrote:
> >> >
> >> > Thanks Woonsan for your quick response.
> >> >
> >> > I tried configuring StatisticsServlet. What I did was, in
> >> jackrabbit-webapp
> >> > I have added StatisticsServlet.
> >> > But RepositoryContext context =
> >> > (RepositoryContext)this.getServletContext().getAttribute(name);----> at
> >> > this line I am unable to retrievecontext.
> >> > This is always coming null.
> >>
> >> jackrabbit-webapp doesn't seem to expose a RepositoryContext. So, I
> >> don't think you can use StatisticsServlet with it.
> >> You can perhaps use JackrabbitRepositoryServlet [1] in a custom web
> >> application to initialize your repository instance instead of
> >> jackrabbit-webapp. Then RepositoryContext will become available.
> >>
> >> Regards,
> >>
> >> Woonsan
> >>
> >> [1]
> >> http://jackrabbit.apache.org/api/trunk/org/apache/jackrabbit/servlet/jackrabbit/JackrabbitRepositoryServlet.html
> >>
> >> >
> >> > So I did it in a hacky way, created a new MetricsServlet overriding
> >> > StatisticsServlet's methods.
> >> >
> >> >
> >> > So my question is, what is the best way to retrieve RepositoryConfig
> >> object
> >> > ?
> >> >
> >> > The following code is giving me stat for newly created repo:
> >> >
> >> > RepositoryConfig config = null;
> >> >     try {
> >> >       config = RepositoryConfig.create(new
> >> File("/Users/xxxxx/repo2"));//
> >> >       //**some try
> >> >       // **some try ends here
> >> >     } catch (ConfigurationException e) {
> >> >       e.printStackTrace();
> >> >     }
> >> >     RepositoryContext context = null;
> >> >     try {
> >> >       context = RepositoryContext.create(config);
> >> >       if (context != null) {
> >> >         RepositoryStatistics statistics =
> >> context.getRepositoryStatistics();
> >> > ==========================>
> >> >
> >> > *I need help in how to instantiate RepositoryConfig, which will point to
> >> > the same repo that my jackrabbit instance is using.*
> >> >
> >> > *There is no documentation found for this :(.*
> >> >
> >> >
> >> >
> >> > *Thanks *
> >> > *Jimy*
> >> >
> >> >
> >> >
> >> > On Mon, Jun 24, 2019 at 7:01 PM Woonsan Ko <wo...@apache.org> wrote:
> >> >
> >> > > On Mon, Jun 24, 2019 at 7:19 AM jimy page <ji...@gmail.com>
> >> wrote:
> >> > > >
> >> > > > I have jackrabbit runnig with repo /users/xyz/repo1
> >> > > > Inside this I have repository.xml
> >> > > >
> >> > > >
> >> > > > I want to call
> >> org.apache.jackrabbit.servlet.jackrabbit.StatisticsServlet
> >> > > > to show different metrices.
> >> > > >
> >> > > >
> >> > > > *But the problem I am facing here is: --> In order to create
> >> > > > RepositoryConfig, I need to pass in the repo folder path, but
> >> Jackrabbit
> >> > > > process is already kept it locked. What is the alternative here ?*
> >> > > >
> >> > > > *I can copy over "/Users/xyz/repository/", to some other folder and
> >> use
> >> > > > that, but my question is in that case will I get all the repository
> >> > > > information ?*
> >> > >
> >> > > I don't think so.
> >> > > If you copy the data such as directories and *recreate* a. new
> >> > > repository instance, it will show new statistics of the new running
> >> > > repository.
> >> > > I think you should just configure the StatisticsServlet on the same
> >> > > web application which initializes the repository.
> >> > >
> >> > > Regards,
> >> > >
> >> > > Woonsan
> >> > >
> >> > > >
> >> > > > ----> Here is my sample code
> >> > > >
> >> > > > HttpServletRequest request, HttpServletResponse response)
> >> > > >       throws ServletException, IOException {
> >> > > >     String klass = RepositoryContext.class.getName();
> >> > > >     String name = getServletConfig().getInitParameter(klass);
> >> > > >     if (name == null) {
> >> > > >       name = klass;
> >> > > >     }
> >> > > >
> >> > > > //    RepositoryContext context = (RepositoryContext)
> >> > > > //        getServletContext().getAttribute(name);
> >> > > >     RepositoryConfig config = null;
> >> > > >     try {
> >> > > >       config = RepositoryConfig.create(new
> >> > > File("/Users/xyz/repository/"));
> >> > > >       //**some try
> >> > > >       // **some try ends here
> >> > > >     } catch (ConfigurationException e) {
> >> > > >       e.printStackTrace();
> >> > > >     }
> >> > > >     RepositoryContext context = null;
> >> > > >     try {
> >> > > >       context = RepositoryContext.create(config);
> >> > >
> >>
> >

Re: How to create RepositoryContext / use Statistics Servlet

Posted by jimy page <ji...@gmail.com>.
Hi Woonsan

Are you saying we need to use
http://svn.apache.org/repos/asf/jackrabbit/site/live/jcr/embedded-repository.html
this deployment model instead of current one I am using ?

Currently I am deploying jackrabbit-webapp.

Thanks
Jimmy

On Tue, Jun 25, 2019 at 9:15 AM jimy page <ji...@gmail.com> wrote:

> Hi Woonsan
>
> Thanks for your input.
>
> So I can write my custom webapplication with JackrabbitRepositoryServlet.
> But I will still need to deploy jackrabbit-webapp for all the other
> functionalities.
> In that case will not my custom-app still suffer from repository lock as
> jackrabbit-webapp will still have lock on the repo ?
>
> Regards
> Jimmy
>
> On Mon, Jun 24, 2019 at 9:20 PM Woonsan Ko <wo...@apache.org> wrote:
>
>> On Mon, Jun 24, 2019 at 11:02 AM jimy page <ji...@gmail.com> wrote:
>> >
>> > Thanks Woonsan for your quick response.
>> >
>> > I tried configuring StatisticsServlet. What I did was, in
>> jackrabbit-webapp
>> > I have added StatisticsServlet.
>> > But RepositoryContext context =
>> > (RepositoryContext)this.getServletContext().getAttribute(name);----> at
>> > this line I am unable to retrievecontext.
>> > This is always coming null.
>>
>> jackrabbit-webapp doesn't seem to expose a RepositoryContext. So, I
>> don't think you can use StatisticsServlet with it.
>> You can perhaps use JackrabbitRepositoryServlet [1] in a custom web
>> application to initialize your repository instance instead of
>> jackrabbit-webapp. Then RepositoryContext will become available.
>>
>> Regards,
>>
>> Woonsan
>>
>> [1]
>> http://jackrabbit.apache.org/api/trunk/org/apache/jackrabbit/servlet/jackrabbit/JackrabbitRepositoryServlet.html
>>
>> >
>> > So I did it in a hacky way, created a new MetricsServlet overriding
>> > StatisticsServlet's methods.
>> >
>> >
>> > So my question is, what is the best way to retrieve RepositoryConfig
>> object
>> > ?
>> >
>> > The following code is giving me stat for newly created repo:
>> >
>> > RepositoryConfig config = null;
>> >     try {
>> >       config = RepositoryConfig.create(new
>> File("/Users/xxxxx/repo2"));//
>> >       //**some try
>> >       // **some try ends here
>> >     } catch (ConfigurationException e) {
>> >       e.printStackTrace();
>> >     }
>> >     RepositoryContext context = null;
>> >     try {
>> >       context = RepositoryContext.create(config);
>> >       if (context != null) {
>> >         RepositoryStatistics statistics =
>> context.getRepositoryStatistics();
>> > ==========================>
>> >
>> > *I need help in how to instantiate RepositoryConfig, which will point to
>> > the same repo that my jackrabbit instance is using.*
>> >
>> > *There is no documentation found for this :(.*
>> >
>> >
>> >
>> > *Thanks *
>> > *Jimy*
>> >
>> >
>> >
>> > On Mon, Jun 24, 2019 at 7:01 PM Woonsan Ko <wo...@apache.org> wrote:
>> >
>> > > On Mon, Jun 24, 2019 at 7:19 AM jimy page <ji...@gmail.com>
>> wrote:
>> > > >
>> > > > I have jackrabbit runnig with repo /users/xyz/repo1
>> > > > Inside this I have repository.xml
>> > > >
>> > > >
>> > > > I want to call
>> org.apache.jackrabbit.servlet.jackrabbit.StatisticsServlet
>> > > > to show different metrices.
>> > > >
>> > > >
>> > > > *But the problem I am facing here is: --> In order to create
>> > > > RepositoryConfig, I need to pass in the repo folder path, but
>> Jackrabbit
>> > > > process is already kept it locked. What is the alternative here ?*
>> > > >
>> > > > *I can copy over "/Users/xyz/repository/", to some other folder and
>> use
>> > > > that, but my question is in that case will I get all the repository
>> > > > information ?*
>> > >
>> > > I don't think so.
>> > > If you copy the data such as directories and *recreate* a. new
>> > > repository instance, it will show new statistics of the new running
>> > > repository.
>> > > I think you should just configure the StatisticsServlet on the same
>> > > web application which initializes the repository.
>> > >
>> > > Regards,
>> > >
>> > > Woonsan
>> > >
>> > > >
>> > > > ----> Here is my sample code
>> > > >
>> > > > HttpServletRequest request, HttpServletResponse response)
>> > > >       throws ServletException, IOException {
>> > > >     String klass = RepositoryContext.class.getName();
>> > > >     String name = getServletConfig().getInitParameter(klass);
>> > > >     if (name == null) {
>> > > >       name = klass;
>> > > >     }
>> > > >
>> > > > //    RepositoryContext context = (RepositoryContext)
>> > > > //        getServletContext().getAttribute(name);
>> > > >     RepositoryConfig config = null;
>> > > >     try {
>> > > >       config = RepositoryConfig.create(new
>> > > File("/Users/xyz/repository/"));
>> > > >       //**some try
>> > > >       // **some try ends here
>> > > >     } catch (ConfigurationException e) {
>> > > >       e.printStackTrace();
>> > > >     }
>> > > >     RepositoryContext context = null;
>> > > >     try {
>> > > >       context = RepositoryContext.create(config);
>> > >
>>
>

Re: How to create RepositoryContext / use Statistics Servlet

Posted by jimy page <ji...@gmail.com>.
Hi Woonsan

Thanks for your input.

So I can write my custom webapplication with JackrabbitRepositoryServlet.
But I will still need to deploy jackrabbit-webapp for all the other
functionalities.
In that case will not my custom-app still suffer from repository lock as
jackrabbit-webapp will still have lock on the repo ?

Regards
Jimmy

On Mon, Jun 24, 2019 at 9:20 PM Woonsan Ko <wo...@apache.org> wrote:

> On Mon, Jun 24, 2019 at 11:02 AM jimy page <ji...@gmail.com> wrote:
> >
> > Thanks Woonsan for your quick response.
> >
> > I tried configuring StatisticsServlet. What I did was, in
> jackrabbit-webapp
> > I have added StatisticsServlet.
> > But RepositoryContext context =
> > (RepositoryContext)this.getServletContext().getAttribute(name);----> at
> > this line I am unable to retrievecontext.
> > This is always coming null.
>
> jackrabbit-webapp doesn't seem to expose a RepositoryContext. So, I
> don't think you can use StatisticsServlet with it.
> You can perhaps use JackrabbitRepositoryServlet [1] in a custom web
> application to initialize your repository instance instead of
> jackrabbit-webapp. Then RepositoryContext will become available.
>
> Regards,
>
> Woonsan
>
> [1]
> http://jackrabbit.apache.org/api/trunk/org/apache/jackrabbit/servlet/jackrabbit/JackrabbitRepositoryServlet.html
>
> >
> > So I did it in a hacky way, created a new MetricsServlet overriding
> > StatisticsServlet's methods.
> >
> >
> > So my question is, what is the best way to retrieve RepositoryConfig
> object
> > ?
> >
> > The following code is giving me stat for newly created repo:
> >
> > RepositoryConfig config = null;
> >     try {
> >       config = RepositoryConfig.create(new File("/Users/xxxxx/repo2"));//
> >       //**some try
> >       // **some try ends here
> >     } catch (ConfigurationException e) {
> >       e.printStackTrace();
> >     }
> >     RepositoryContext context = null;
> >     try {
> >       context = RepositoryContext.create(config);
> >       if (context != null) {
> >         RepositoryStatistics statistics =
> context.getRepositoryStatistics();
> > ==========================>
> >
> > *I need help in how to instantiate RepositoryConfig, which will point to
> > the same repo that my jackrabbit instance is using.*
> >
> > *There is no documentation found for this :(.*
> >
> >
> >
> > *Thanks *
> > *Jimy*
> >
> >
> >
> > On Mon, Jun 24, 2019 at 7:01 PM Woonsan Ko <wo...@apache.org> wrote:
> >
> > > On Mon, Jun 24, 2019 at 7:19 AM jimy page <ji...@gmail.com>
> wrote:
> > > >
> > > > I have jackrabbit runnig with repo /users/xyz/repo1
> > > > Inside this I have repository.xml
> > > >
> > > >
> > > > I want to call
> org.apache.jackrabbit.servlet.jackrabbit.StatisticsServlet
> > > > to show different metrices.
> > > >
> > > >
> > > > *But the problem I am facing here is: --> In order to create
> > > > RepositoryConfig, I need to pass in the repo folder path, but
> Jackrabbit
> > > > process is already kept it locked. What is the alternative here ?*
> > > >
> > > > *I can copy over "/Users/xyz/repository/", to some other folder and
> use
> > > > that, but my question is in that case will I get all the repository
> > > > information ?*
> > >
> > > I don't think so.
> > > If you copy the data such as directories and *recreate* a. new
> > > repository instance, it will show new statistics of the new running
> > > repository.
> > > I think you should just configure the StatisticsServlet on the same
> > > web application which initializes the repository.
> > >
> > > Regards,
> > >
> > > Woonsan
> > >
> > > >
> > > > ----> Here is my sample code
> > > >
> > > > HttpServletRequest request, HttpServletResponse response)
> > > >       throws ServletException, IOException {
> > > >     String klass = RepositoryContext.class.getName();
> > > >     String name = getServletConfig().getInitParameter(klass);
> > > >     if (name == null) {
> > > >       name = klass;
> > > >     }
> > > >
> > > > //    RepositoryContext context = (RepositoryContext)
> > > > //        getServletContext().getAttribute(name);
> > > >     RepositoryConfig config = null;
> > > >     try {
> > > >       config = RepositoryConfig.create(new
> > > File("/Users/xyz/repository/"));
> > > >       //**some try
> > > >       // **some try ends here
> > > >     } catch (ConfigurationException e) {
> > > >       e.printStackTrace();
> > > >     }
> > > >     RepositoryContext context = null;
> > > >     try {
> > > >       context = RepositoryContext.create(config);
> > >
>

Re: How to create RepositoryContext / use Statistics Servlet

Posted by Woonsan Ko <wo...@apache.org>.
On Mon, Jun 24, 2019 at 11:02 AM jimy page <ji...@gmail.com> wrote:
>
> Thanks Woonsan for your quick response.
>
> I tried configuring StatisticsServlet. What I did was, in jackrabbit-webapp
> I have added StatisticsServlet.
> But RepositoryContext context =
> (RepositoryContext)this.getServletContext().getAttribute(name);----> at
> this line I am unable to retrievecontext.
> This is always coming null.

jackrabbit-webapp doesn't seem to expose a RepositoryContext. So, I
don't think you can use StatisticsServlet with it.
You can perhaps use JackrabbitRepositoryServlet [1] in a custom web
application to initialize your repository instance instead of
jackrabbit-webapp. Then RepositoryContext will become available.

Regards,

Woonsan

[1] http://jackrabbit.apache.org/api/trunk/org/apache/jackrabbit/servlet/jackrabbit/JackrabbitRepositoryServlet.html

>
> So I did it in a hacky way, created a new MetricsServlet overriding
> StatisticsServlet's methods.
>
>
> So my question is, what is the best way to retrieve RepositoryConfig object
> ?
>
> The following code is giving me stat for newly created repo:
>
> RepositoryConfig config = null;
>     try {
>       config = RepositoryConfig.create(new File("/Users/xxxxx/repo2"));//
>       //**some try
>       // **some try ends here
>     } catch (ConfigurationException e) {
>       e.printStackTrace();
>     }
>     RepositoryContext context = null;
>     try {
>       context = RepositoryContext.create(config);
>       if (context != null) {
>         RepositoryStatistics statistics = context.getRepositoryStatistics();
> ==========================>
>
> *I need help in how to instantiate RepositoryConfig, which will point to
> the same repo that my jackrabbit instance is using.*
>
> *There is no documentation found for this :(.*
>
>
>
> *Thanks *
> *Jimy*
>
>
>
> On Mon, Jun 24, 2019 at 7:01 PM Woonsan Ko <wo...@apache.org> wrote:
>
> > On Mon, Jun 24, 2019 at 7:19 AM jimy page <ji...@gmail.com> wrote:
> > >
> > > I have jackrabbit runnig with repo /users/xyz/repo1
> > > Inside this I have repository.xml
> > >
> > >
> > > I want to call org.apache.jackrabbit.servlet.jackrabbit.StatisticsServlet
> > > to show different metrices.
> > >
> > >
> > > *But the problem I am facing here is: --> In order to create
> > > RepositoryConfig, I need to pass in the repo folder path, but Jackrabbit
> > > process is already kept it locked. What is the alternative here ?*
> > >
> > > *I can copy over "/Users/xyz/repository/", to some other folder and use
> > > that, but my question is in that case will I get all the repository
> > > information ?*
> >
> > I don't think so.
> > If you copy the data such as directories and *recreate* a. new
> > repository instance, it will show new statistics of the new running
> > repository.
> > I think you should just configure the StatisticsServlet on the same
> > web application which initializes the repository.
> >
> > Regards,
> >
> > Woonsan
> >
> > >
> > > ----> Here is my sample code
> > >
> > > HttpServletRequest request, HttpServletResponse response)
> > >       throws ServletException, IOException {
> > >     String klass = RepositoryContext.class.getName();
> > >     String name = getServletConfig().getInitParameter(klass);
> > >     if (name == null) {
> > >       name = klass;
> > >     }
> > >
> > > //    RepositoryContext context = (RepositoryContext)
> > > //        getServletContext().getAttribute(name);
> > >     RepositoryConfig config = null;
> > >     try {
> > >       config = RepositoryConfig.create(new
> > File("/Users/xyz/repository/"));
> > >       //**some try
> > >       // **some try ends here
> > >     } catch (ConfigurationException e) {
> > >       e.printStackTrace();
> > >     }
> > >     RepositoryContext context = null;
> > >     try {
> > >       context = RepositoryContext.create(config);
> >

Re: How to create RepositoryContext / use Statistics Servlet

Posted by jimy page <ji...@gmail.com>.
Thanks Woonsan for your quick response.

I tried configuring StatisticsServlet. What I did was, in jackrabbit-webapp
I have added StatisticsServlet.
But RepositoryContext context =
(RepositoryContext)this.getServletContext().getAttribute(name);----> at
this line I am unable to retrievecontext.
This is always coming null.

So I did it in a hacky way, created a new MetricsServlet overriding
StatisticsServlet's methods.


So my question is, what is the best way to retrieve RepositoryConfig object
?

The following code is giving me stat for newly created repo:

RepositoryConfig config = null;
    try {
      config = RepositoryConfig.create(new File("/Users/xxxxx/repo2"));//
      //**some try
      // **some try ends here
    } catch (ConfigurationException e) {
      e.printStackTrace();
    }
    RepositoryContext context = null;
    try {
      context = RepositoryContext.create(config);
      if (context != null) {
        RepositoryStatistics statistics = context.getRepositoryStatistics();
==========================>

*I need help in how to instantiate RepositoryConfig, which will point to
the same repo that my jackrabbit instance is using.*

*There is no documentation found for this :(.*



*Thanks *
*Jimy*



On Mon, Jun 24, 2019 at 7:01 PM Woonsan Ko <wo...@apache.org> wrote:

> On Mon, Jun 24, 2019 at 7:19 AM jimy page <ji...@gmail.com> wrote:
> >
> > I have jackrabbit runnig with repo /users/xyz/repo1
> > Inside this I have repository.xml
> >
> >
> > I want to call org.apache.jackrabbit.servlet.jackrabbit.StatisticsServlet
> > to show different metrices.
> >
> >
> > *But the problem I am facing here is: --> In order to create
> > RepositoryConfig, I need to pass in the repo folder path, but Jackrabbit
> > process is already kept it locked. What is the alternative here ?*
> >
> > *I can copy over "/Users/xyz/repository/", to some other folder and use
> > that, but my question is in that case will I get all the repository
> > information ?*
>
> I don't think so.
> If you copy the data such as directories and *recreate* a. new
> repository instance, it will show new statistics of the new running
> repository.
> I think you should just configure the StatisticsServlet on the same
> web application which initializes the repository.
>
> Regards,
>
> Woonsan
>
> >
> > ----> Here is my sample code
> >
> > HttpServletRequest request, HttpServletResponse response)
> >       throws ServletException, IOException {
> >     String klass = RepositoryContext.class.getName();
> >     String name = getServletConfig().getInitParameter(klass);
> >     if (name == null) {
> >       name = klass;
> >     }
> >
> > //    RepositoryContext context = (RepositoryContext)
> > //        getServletContext().getAttribute(name);
> >     RepositoryConfig config = null;
> >     try {
> >       config = RepositoryConfig.create(new
> File("/Users/xyz/repository/"));
> >       //**some try
> >       // **some try ends here
> >     } catch (ConfigurationException e) {
> >       e.printStackTrace();
> >     }
> >     RepositoryContext context = null;
> >     try {
> >       context = RepositoryContext.create(config);
>

Re: How to create RepositoryContext / use Statistics Servlet

Posted by Woonsan Ko <wo...@apache.org>.
On Mon, Jun 24, 2019 at 7:19 AM jimy page <ji...@gmail.com> wrote:
>
> I have jackrabbit runnig with repo /users/xyz/repo1
> Inside this I have repository.xml
>
>
> I want to call org.apache.jackrabbit.servlet.jackrabbit.StatisticsServlet
> to show different metrices.
>
>
> *But the problem I am facing here is: --> In order to create
> RepositoryConfig, I need to pass in the repo folder path, but Jackrabbit
> process is already kept it locked. What is the alternative here ?*
>
> *I can copy over "/Users/xyz/repository/", to some other folder and use
> that, but my question is in that case will I get all the repository
> information ?*

I don't think so.
If you copy the data such as directories and *recreate* a. new
repository instance, it will show new statistics of the new running
repository.
I think you should just configure the StatisticsServlet on the same
web application which initializes the repository.

Regards,

Woonsan

>
> ----> Here is my sample code
>
> HttpServletRequest request, HttpServletResponse response)
>       throws ServletException, IOException {
>     String klass = RepositoryContext.class.getName();
>     String name = getServletConfig().getInitParameter(klass);
>     if (name == null) {
>       name = klass;
>     }
>
> //    RepositoryContext context = (RepositoryContext)
> //        getServletContext().getAttribute(name);
>     RepositoryConfig config = null;
>     try {
>       config = RepositoryConfig.create(new File("/Users/xyz/repository/"));
>       //**some try
>       // **some try ends here
>     } catch (ConfigurationException e) {
>       e.printStackTrace();
>     }
>     RepositoryContext context = null;
>     try {
>       context = RepositoryContext.create(config);