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