On Tue, Jun 25, 2019 at 1:47 AM jimy page <[email protected]> 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 <[email protected]> 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 <[email protected]> wrote:
> >
> >> On Mon, Jun 24, 2019 at 11:02 AM jimy page <[email protected]> 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 <[email protected]> wrote:
> >> >
> >> > > On Mon, Jun 24, 2019 at 7:19 AM jimy page <[email protected]>
> >> 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);
> >> > >
> >>
> >

Reply via email to