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);