exist-db / dashboard Goto Github PK
View Code? Open in Web Editor NEWeXist-db Dashboard
License: GNU Lesser General Public License v2.1
eXist-db Dashboard
License: GNU Lesser General Public License v2.1
will be replaced by a XAR file. rationale: simplification of build scripts, no JAR signing conflicts etc.
needs to be done before release of v5.0RC or can it be later ? @adamretter
We are routing http-traffic to our eXist-db instances through nginx as a proxy that also handles traffic encryption, on exist's contributed jetty all ssl-related configuration is deactivated.
While the dashboard does work when requested via http
, but yields this document when requested via https
:
<exception>
<path>/db/apps/dashboard/modules/view.xql</path>
<message>exerr:ERROR XPTY0004: The actual cardinality for parameter 1 does not match the cardinality declared in the function's signature: templates:apply($content as node()+, $resolver as function, $model as map?) item()*. Expected cardinality: one or more, got 0. [at line 38, column 22, source: /db/apps/dashboard/modules/view.xql]
In function:
templates:apply(node()+, function, map?) [38:5:/db/apps/dashboard/modules/templates.xql]
</message>
</exception>
This applies with Chromium 58.0.3029.110 as well as Firefox 54.0 on Ubuntu 16.04. curl does fine, so it may be related to some functionality that is implemented with Javascript .
The error is not evoked by our own apps, they work as expected.
Please always add the following information
The "create user" button should be placed outside of the scrolling list, otherwise one has to always scroll down to add a user.
It has been some time since anyone suggested a new version of the dashboard. I would like to make a serious attempt this time.
I've gotten a lot of positive feedback on my proposal to use Dojo 1.10 as the basis for the dashboard, which is miles ahead of the version currently used. For those who don't know, however, Dojo does have some downsides, as there is some very ancient code to support browser that we've all forgotten about, like IE8 and even older. As my plan now stands, only the bare essentials from Dojo will be used. As I know the code base very well [1], I know what is only used by those unknown, prehistoric browsers, and can be, as they say, ditched [2]. Of course I want to keep the footprint as small as possible, and would gladly opt for any other widget system that work as well as Dojo's does.
Instead of a plugin system, the idea is to add expath packages to the dashboard that can be told to become available as a dashboard popup (as proposed by @adamretter). The XAR will register as a very basic widget, provided as a single AMD module. The widget must be AMD-compatible and will have to render its own DOM after loading.
A tiny roadmap:
Notes:
[1]: As a Dojo contributor I'm also closely following the developments of its upcoming version 2.0 release.
[2]: For example, the collection browser uses a form framework I created, dforma, where only the AMD loader, dstore, dgrid, and some very basic widgets are used. The rest of the code is mine.
It is eye candy but rather useful, to have a favico linked to the dashboard, It makes the dashboard more easy to find in the bookmarks
The last commit in the develop
branch is from 2013. If development isn't happening in the develop
branch but in the master
branch, let's delete develop
.
build.xml#L40 is expanded to
<!--<arg value="--bundle"/>-->
when deployed to db, leading to not well-formed xml and problems during backup and restore.
see slack thread
24 Apr 2014 21:23:20,618 [eXistThread-40] WARN (ServletHandler.java [doHandle]:492) -
javax.servlet.ServletException: An error occurred while processing request to /exist/apps/dashboard/modules/install.xql: An unknown error occurred: null
at org.exist.http.urlrewrite.XQueryURLRewrite.service(XQueryURLRewrite.java:394)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:669)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1448)
at de.betterform.agent.web.filter.XFormsFilter.doFilter(XFormsFilter.java:177)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1419)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:455)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:533)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1075)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:384)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1009)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:154)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
at org.eclipse.jetty.server.Server.handle(Server.java:368)
at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:488)
at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:943)
at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1004)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:861)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240)
at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:628)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
at java.lang.Thread.run(Thread.java:745)
Caused by: javax.servlet.ServletException: An unknown error occurred: null
at org.exist.http.servlets.EXistServlet.doPost(EXistServlet.java:473)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:755)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:669)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:457)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:575)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1075)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:384)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1009)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:229)
at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:103)
at org.exist.http.urlrewrite.Forward.doRewrite(Forward.java:46)
at org.exist.http.urlrewrite.XQueryURLRewrite.doRewrite(XQueryURLRewrite.java:577)
at org.exist.http.urlrewrite.XQueryURLRewrite.service(XQueryURLRewrite.java:353)
... 28 more
Caused by: java.lang.NullPointerException
at org.exist.repo.Deployment.uninstall(Deployment.java:445)
at org.exist.repo.Deployment.undeploy(Deployment.java:271)
at org.exist.xquery.modules.expathrepo.Deploy.eval(Deploy.java:146)
at org.exist.xquery.BasicFunction.eval(BasicFunction.java:70)
at org.exist.xquery.InternalFunctionCall.eval(InternalFunctionCall.java:56)
at org.exist.xquery.LetExpr.eval(LetExpr.java:142)
at org.exist.xquery.BindingExpression.eval(BindingExpression.java:164)
at org.exist.xquery.ConditionalExpression.eval(ConditionalExpression.java:100)
at org.exist.xquery.UserDefinedFunction.eval(UserDefinedFunction.java:153)
at org.exist.xquery.DynamicCardinalityCheck.eval(DynamicCardinalityCheck.java:74)
at org.exist.xquery.Atomize.eval(Atomize.java:66)
at org.exist.xquery.DynamicTypeCheck.eval(DynamicTypeCheck.java:61)
at org.exist.xquery.FunctionCall.evalFunction(FunctionCall.java:328)
at org.exist.xquery.FunctionCall.eval(FunctionCall.java:232)
at org.exist.xquery.LetExpr.eval(LetExpr.java:142)
at org.exist.xquery.LetExpr.eval(LetExpr.java:187)
at org.exist.xquery.BindingExpression.eval(BindingExpression.java:164)
at org.exist.xquery.AbstractExpression.eval(AbstractExpression.java:71)
at org.exist.xquery.PathExpr.eval(PathExpr.java:264)
at org.exist.xquery.AbstractExpression.eval(AbstractExpression.java:71)
at org.exist.xquery.SwitchExpression.eval(SwitchExpression.java:104)
at org.exist.xquery.DebuggableExpression.eval(DebuggableExpression.java:58)
at org.exist.xquery.ConditionalExpression.eval(ConditionalExpression.java:102)
at org.exist.xquery.UserDefinedFunction.eval(UserDefinedFunction.java:153)
at org.exist.xquery.FunctionCall.evalFunction(FunctionCall.java:328)
at org.exist.xquery.FunctionCall.eval(FunctionCall.java:232)
at org.exist.xquery.AbstractExpression.eval(AbstractExpression.java:71)
at org.exist.xquery.value.FunctionReference.eval(FunctionReference.java:80)
at org.exist.xquery.DynamicFunctionCall.eval(DynamicFunctionCall.java:75)
at org.exist.xquery.ConditionalExpression.eval(ConditionalExpression.java:100)
at org.exist.xquery.UserDefinedFunction.eval(UserDefinedFunction.java:153)
at org.exist.xquery.FunctionCall.evalFunction(FunctionCall.java:328)
at org.exist.xquery.FunctionCall.eval(FunctionCall.java:232)
at org.exist.xquery.DebuggableExpression.eval(DebuggableExpression.java:58)
at org.exist.xquery.DebuggableExpression.eval(DebuggableExpression.java:65)
at org.exist.xquery.LetExpr.eval(LetExpr.java:189)
at org.exist.xquery.LetExpr.eval(LetExpr.java:187)
at org.exist.xquery.LetExpr.eval(LetExpr.java:187)
at org.exist.xquery.LetExpr.eval(LetExpr.java:187)
at org.exist.xquery.LetExpr.eval(LetExpr.java:187)
at org.exist.xquery.BindingExpression.eval(BindingExpression.java:164)
at org.exist.xquery.AbstractExpression.eval(AbstractExpression.java:71)
at org.exist.xquery.PathExpr.eval(PathExpr.java:264)
at org.exist.xquery.AbstractExpression.eval(AbstractExpression.java:71)
at org.exist.xquery.XQuery.execute(XQuery.java:297)
at org.exist.xquery.XQuery.execute(XQuery.java:217)
at org.exist.http.RESTServer.executeXQuery(RESTServer.java:1533)
at org.exist.http.RESTServer.doPost(RESTServer.java:672)
at org.exist.http.servlets.EXistServlet.doPost(EXistServlet.java:445)
... 45 more
24 Apr 2014 21:23:20,619 [eXistThread-40] WARN (ServletHandler.java [doHandle]:517) - /exist/apps/dashboard/modules/install.xql
javax.servlet.ServletException: An unknown error occurred: null
at org.exist.http.servlets.EXistServlet.doPost(EXistServlet.java:473)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:755)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:669)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:457)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:575)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1075)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:384)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1009)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:229)
at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:103)
at org.exist.http.urlrewrite.Forward.doRewrite(Forward.java:46)
at org.exist.http.urlrewrite.XQueryURLRewrite.doRewrite(XQueryURLRewrite.java:577)
at org.exist.http.urlrewrite.XQueryURLRewrite.service(XQueryURLRewrite.java:353)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:669)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1448)
at de.betterform.agent.web.filter.XFormsFilter.doFilter(XFormsFilter.java:177)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1419)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:455)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:533)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1075)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:384)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1009)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:154)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
at org.eclipse.jetty.server.Server.handle(Server.java:368)
at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:488)
at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:943)
at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1004)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:861)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240)
at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:628)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NullPointerException
at org.exist.repo.Deployment.uninstall(Deployment.java:445)
at org.exist.repo.Deployment.undeploy(Deployment.java:271)
at org.exist.xquery.modules.expathrepo.Deploy.eval(Deploy.java:146)
at org.exist.xquery.BasicFunction.eval(BasicFunction.java:70)
at org.exist.xquery.InternalFunctionCall.eval(InternalFunctionCall.java:56)
at org.exist.xquery.LetExpr.eval(LetExpr.java:142)
at org.exist.xquery.BindingExpression.eval(BindingExpression.java:164)
at org.exist.xquery.ConditionalExpression.eval(ConditionalExpression.java:100)
at org.exist.xquery.UserDefinedFunction.eval(UserDefinedFunction.java:153)
at org.exist.xquery.DynamicCardinalityCheck.eval(DynamicCardinalityCheck.java:74)
at org.exist.xquery.Atomize.eval(Atomize.java:66)
at org.exist.xquery.DynamicTypeCheck.eval(DynamicTypeCheck.java:61)
at org.exist.xquery.FunctionCall.evalFunction(FunctionCall.java:328)
at org.exist.xquery.FunctionCall.eval(FunctionCall.java:232)
at org.exist.xquery.LetExpr.eval(LetExpr.java:142)
at org.exist.xquery.LetExpr.eval(LetExpr.java:187)
at org.exist.xquery.BindingExpression.eval(BindingExpression.java:164)
at org.exist.xquery.AbstractExpression.eval(AbstractExpression.java:71)
at org.exist.xquery.PathExpr.eval(PathExpr.java:264)
at org.exist.xquery.AbstractExpression.eval(AbstractExpression.java:71)
at org.exist.xquery.SwitchExpression.eval(SwitchExpression.java:104)
at org.exist.xquery.DebuggableExpression.eval(DebuggableExpression.java:58)
at org.exist.xquery.ConditionalExpression.eval(ConditionalExpression.java:102)
at org.exist.xquery.UserDefinedFunction.eval(UserDefinedFunction.java:153)
at org.exist.xquery.FunctionCall.evalFunction(FunctionCall.java:328)
at org.exist.xquery.FunctionCall.eval(FunctionCall.java:232)
at org.exist.xquery.AbstractExpression.eval(AbstractExpression.java:71)
at org.exist.xquery.value.FunctionReference.eval(FunctionReference.java:80)
at org.exist.xquery.DynamicFunctionCall.eval(DynamicFunctionCall.java:75)
at org.exist.xquery.ConditionalExpression.eval(ConditionalExpression.java:100)
at org.exist.xquery.UserDefinedFunction.eval(UserDefinedFunction.java:153)
at org.exist.xquery.FunctionCall.evalFunction(FunctionCall.java:328)
at org.exist.xquery.FunctionCall.eval(FunctionCall.java:232)
at org.exist.xquery.DebuggableExpression.eval(DebuggableExpression.java:58)
at org.exist.xquery.DebuggableExpression.eval(DebuggableExpression.java:65)
at org.exist.xquery.LetExpr.eval(LetExpr.java:189)
at org.exist.xquery.LetExpr.eval(LetExpr.java:187)
at org.exist.xquery.LetExpr.eval(LetExpr.java:187)
at org.exist.xquery.LetExpr.eval(LetExpr.java:187)
at org.exist.xquery.LetExpr.eval(LetExpr.java:187)
at org.exist.xquery.BindingExpression.eval(BindingExpression.java:164)
at org.exist.xquery.AbstractExpression.eval(AbstractExpression.java:71)
at org.exist.xquery.PathExpr.eval(PathExpr.java:264)
at org.exist.xquery.AbstractExpression.eval(AbstractExpression.java:71)
at org.exist.xquery.XQuery.execute(XQuery.java:297)
at org.exist.xquery.XQuery.execute(XQuery.java:217)
at org.exist.http.RESTServer.executeXQuery(RESTServer.java:1533)
at org.exist.http.RESTServer.doPost(RESTServer.java:672)
at org.exist.http.servlets.EXistServlet.doPost(EXistServlet.java:445)
... 45 more
At 9eaab9, when shutting down through the dashboard, Jetty stops, but eXist is still running:
ps ax | grep 'exist' 61371 s000 S+ 0:00.00 /bin/bash /Applications/exist_dev/bin/startup.sh 61380 s000 S+ 0:21.96 /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/bin/java -Xms128m -Xmx1024m -Dfile.encoding=UTF-8 -Djava.endorsed.dirs=/Applications/exist_dev/lib/endorsed -Dexist.home=/Applications/exist_dev -jar /Applications/exist_dev/start.jar jetty 61429 s001 S+ 0:00.00 grep exist
It's not possible to login into the dashboard using a user not in the group dba
in contrast using the Java client, where this is possible.
Despite the sorting 'items' on top of the table, clicking on these 'items' the table is not sorted. the table is refreshed.
In one exist-db instance the list of backup files is kept more or less randomly, at an other instance the alpha-order is not changeable.
Browsers: FireFox , Safari and Chrome
@mrangnekar commented on Oct 18, 2016, 5:31 AM UTC:
http://exist-db.org/exist/apps/dashboard/index.html login popup not displaying on Chrome 54.0
dijitpopup not working.
This issue was moved by duncdrum from eXist-db/exist#1150.
When I open the usermanager, it keeps requesting user items from exist. This also means I can never scroll down to the end of the list.
When removing my XAR, I see the soloing trace (exist.log);
java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.String.substring(String.java:1911)
at org.expath.pkg.repo.FileSystemStorage$FileSystemResolver.removePackageInTxt(FileSystemStorage.java:286)
at org.expath.pkg.repo.FileSystemStorage$FileSystemResolver.removePackage(FileSystemStorage.java:235)
at org.expath.pkg.repo.Package.removeContent(Package.java:52)
at org.expath.pkg.repo.Repository.removePackage(Repository.java:261)
at org.exist.xquery.modules.expathrepo.RemoveFunction.eval(RemoveFunction.java:54)
During loading of the modules into eXist I saw a similar warning in the UI (-1) but nothing was in the logs
28 Dec 2013 14:33:43,893 [eXistThread-42] WARN (ServletHandler.java [doHandle]:492) -
javax.servlet.ServletException: An error occurred while processing request to /exist/apps/dashboard/modules/install.xql: An unknown error occurred: String index out of range: -1
at org.exist.http.urlrewrite.XQueryURLRewrite.service(XQueryURLRewrite.java:380)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:669)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1448)
at de.betterform.agent.web.filter.XFormsFilter.doFilter(Unknown Source)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1419)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:455)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:533)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1075)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:384)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1009)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:154)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
at org.eclipse.jetty.server.Server.handle(Server.java:368)
at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:488)
at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:943)
at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1004)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:861)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240)
at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:628)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
at java.lang.Thread.run(Thread.java:744)
Caused by: javax.servlet.ServletException: An unknown error occurred: String index out of range: -1
at org.exist.http.servlets.EXistServlet.doPost(EXistServlet.java:473)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:755)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:669)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:457)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:575)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1075)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:384)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1009)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:229)
at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:103)
at org.exist.http.urlrewrite.Forward.doRewrite(Forward.java:46)
at org.exist.http.urlrewrite.XQueryURLRewrite.doRewrite(XQueryURLRewrite.java:563)
at org.exist.http.urlrewrite.XQueryURLRewrite.service(XQueryURLRewrite.java:339)
... 28 more
Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.String.substring(String.java:1911)
at org.expath.pkg.repo.FileSystemStorage$FileSystemResolver.removePackageInTxt(FileSystemStorage.java:286)
at org.expath.pkg.repo.FileSystemStorage$FileSystemResolver.removePackage(FileSystemStorage.java:235)
at org.expath.pkg.repo.Package.removeContent(Package.java:52)
at org.expath.pkg.repo.Repository.removePackage(Repository.java:261)
at org.exist.xquery.modules.expathrepo.RemoveFunction.eval(RemoveFunction.java:54)
at org.exist.xquery.BasicFunction.eval(BasicFunction.java:70)
at org.exist.xquery.InternalFunctionCall.eval(InternalFunctionCall.java:55)
at org.exist.xquery.LetExpr.eval(LetExpr.java:142)
at org.exist.xquery.LetExpr.eval(LetExpr.java:187)
at org.exist.xquery.BindingExpression.eval(BindingExpression.java:164)
at org.exist.xquery.ConditionalExpression.eval(ConditionalExpression.java:100)
at org.exist.xquery.UserDefinedFunction.eval(UserDefinedFunction.java:153)
at org.exist.xquery.DynamicCardinalityCheck.eval(DynamicCardinalityCheck.java:74)
at org.exist.xquery.Atomize.eval(Atomize.java:66)
at org.exist.xquery.DynamicTypeCheck.eval(DynamicTypeCheck.java:61)
at org.exist.xquery.FunctionCall.evalFunction(FunctionCall.java:327)
at org.exist.xquery.FunctionCall.eval(FunctionCall.java:232)
at org.exist.xquery.LetExpr.eval(LetExpr.java:142)
at org.exist.xquery.LetExpr.eval(LetExpr.java:187)
at org.exist.xquery.BindingExpression.eval(BindingExpression.java:164)
at org.exist.xquery.AbstractExpression.eval(AbstractExpression.java:71)
at org.exist.xquery.PathExpr.eval(PathExpr.java:264)
at org.exist.xquery.AbstractExpression.eval(AbstractExpression.java:71)
at org.exist.xquery.SwitchExpression.eval(SwitchExpression.java:104)
at org.exist.xquery.DebuggableExpression.eval(DebuggableExpression.java:58)
at org.exist.xquery.ConditionalExpression.eval(ConditionalExpression.java:102)
at org.exist.xquery.UserDefinedFunction.eval(UserDefinedFunction.java:153)
at org.exist.xquery.FunctionCall.evalFunction(FunctionCall.java:327)
at org.exist.xquery.FunctionCall.eval(FunctionCall.java:232)
at org.exist.xquery.AbstractExpression.eval(AbstractExpression.java:71)
at org.exist.xquery.value.FunctionReference.eval(FunctionReference.java:80)
at org.exist.xquery.DynamicFunctionCall.eval(DynamicFunctionCall.java:74)
at org.exist.xquery.ConditionalExpression.eval(ConditionalExpression.java:100)
at org.exist.xquery.UserDefinedFunction.eval(UserDefinedFunction.java:153)
at org.exist.xquery.FunctionCall.evalFunction(FunctionCall.java:327)
at org.exist.xquery.FunctionCall.eval(FunctionCall.java:232)
at org.exist.xquery.DebuggableExpression.eval(DebuggableExpression.java:58)
at org.exist.xquery.DebuggableExpression.eval(DebuggableExpression.java:65)
at org.exist.xquery.LetExpr.eval(LetExpr.java:189)
at org.exist.xquery.LetExpr.eval(LetExpr.java:187)
at org.exist.xquery.LetExpr.eval(LetExpr.java:187)
at org.exist.xquery.LetExpr.eval(LetExpr.java:187)
at org.exist.xquery.LetExpr.eval(LetExpr.java:187)
at org.exist.xquery.BindingExpression.eval(BindingExpression.java:164)
at org.exist.xquery.AbstractExpression.eval(AbstractExpression.java:71)
at org.exist.xquery.PathExpr.eval(PathExpr.java:264)
at org.exist.xquery.AbstractExpression.eval(AbstractExpression.java:71)
at org.exist.xquery.XQuery.execute(XQuery.java:267)
at org.exist.xquery.XQuery.execute(XQuery.java:214)
at org.exist.http.RESTServer.executeXQuery(RESTServer.java:1533)
at org.exist.http.RESTServer.doPost(RESTServer.java:672)
at org.exist.http.servlets.EXistServlet.doPost(EXistServlet.java:445)
... 45 more
move[bot] commented on Mar 23, 2019, 11:22 PM UTC:
joewiz commented on Jan 26, 2019, 8:57 PM UTC:
As originally implemented for 1.x in #36. Needs a 2.x implementation.
This issue was moved by joewiz from eXist-db/dashboard#75.
This issue was moved by joewiz from eXist-db/existdb-dashboard#18.
Would be good to see some basic eXist version information on the dashboard main page.
As first reported by Alister Pillow at http://markmail.org/message/iow4bfpmeesnzfkd, the Dashboard > User Manager cannot display users or groups when logged in using the "remember me" option selected. The problem is absent when logging in without this checkbox selected.
Specifically, after logging in to Dashboard with the "remember me" checkbox selected, a request to http://localhost:8080/exist/apps/dashboard/plugins/userManager/api/user/ will return an ERROR 500, with the following error in exist.log (also reported in the browser):
2016-08-18 14:26:53,087 [qtp1974513281-37] WARN (ServletHandler.java [doHandle]:623) -
javax.servlet.ServletException: An error occurred while processing request to /exist/apps/dashboard/plugins/userManager/api/user/: exerr:ERROR You must be an authenticated user [at line 69, column 38, source: /db/apps/dashboard/plugins/userManager/userManager.xqm]
In function:
usermanager:get-user(item()*) [44:17:/db/apps/dashboard/plugins/userManager/userManager.xqm]
usermanager:list-users() [70:5:/db/apps/dashboard/plugins/userManager/userManager.xqm]
local:list-users(xs:string?) [195:70:/db/apps/dashboard/plugins/userManager/controller.xql]
at org.exist.http.urlrewrite.XQueryURLRewrite.service(XQueryURLRewrite.java:378) ~[exist-optional.jar:?]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) ~[servlet-api-3.1.jar:3.1.0]
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:845) ~[jetty-servlet-9.3.9.v20160517.jar:9.3.9.v20160517]
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1689) ~[jetty-servlet-9.3.9.v20160517.jar:9.3.9.v20160517]
at de.betterform.agent.web.filter.XFormsFilter.doFilter(XFormsFilter.java:171) ~[betterform-exist-5.1-SNAPSHOT-20160615.jar:?]
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668) ~[jetty-servlet-9.3.9.v20160517.jar:9.3.9.v20160517]
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581) [jetty-servlet-9.3.9.v20160517.jar:9.3.9.v20160517]
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) [jetty-server-9.3.9.v20160517.jar:9.3.9.v20160517]
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:524) [jetty-security-9.3.9.v20160517.jar:9.3.9.v20160517]
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226) [jetty-server-9.3.9.v20160517.jar:9.3.9.v20160517]
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1174) [jetty-server-9.3.9.v20160517.jar:9.3.9.v20160517]
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511) [jetty-servlet-9.3.9.v20160517.jar:9.3.9.v20160517]
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) [jetty-server-9.3.9.v20160517.jar:9.3.9.v20160517]
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1106) [jetty-server-9.3.9.v20160517.jar:9.3.9.v20160517]
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) [jetty-server-9.3.9.v20160517.jar:9.3.9.v20160517]
at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213) [jetty-server-9.3.9.v20160517.jar:9.3.9.v20160517]
at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:119) [jetty-server-9.3.9.v20160517.jar:9.3.9.v20160517]
at org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:459) [jetty-server-9.3.9.v20160517.jar:9.3.9.v20160517]
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134) [jetty-server-9.3.9.v20160517.jar:9.3.9.v20160517]
at org.eclipse.jetty.server.Server.handle(Server.java:524) [jetty-server-9.3.9.v20160517.jar:9.3.9.v20160517]
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:319) [jetty-server-9.3.9.v20160517.jar:9.3.9.v20160517]
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:253) [jetty-server-9.3.9.v20160517.jar:9.3.9.v20160517]
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:273) [jetty-io-9.3.9.v20160517.jar:9.3.9.v20160517]
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95) [jetty-io-9.3.9.v20160517.jar:9.3.9.v20160517]
at org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:93) [jetty-io-9.3.9.v20160517.jar:9.3.9.v20160517]
at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.executeProduceConsume(ExecuteProduceConsume.java:303) [jetty-util-9.3.9.v20160517.jar:9.3.9.v20160517]
at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceConsume(ExecuteProduceConsume.java:148) [jetty-util-9.3.9.v20160517.jar:9.3.9.v20160517]
at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:136) [jetty-util-9.3.9.v20160517.jar:9.3.9.v20160517]
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:671) [jetty-util-9.3.9.v20160517.jar:9.3.9.v20160517]
at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:589) [jetty-util-9.3.9.v20160517.jar:9.3.9.v20160517]
at java.lang.Thread.run(Thread.java:745) [?:1.8.0_102]
Caused by: org.exist.xquery.XPathException: exerr:ERROR You must be an authenticated user [at line 69, column 38, source: /db/apps/dashboard/plugins/userManager/userManager.xqm]
In function:
usermanager:get-user(item()*) [44:17:/db/apps/dashboard/plugins/userManager/userManager.xqm]
usermanager:list-users() [70:5:/db/apps/dashboard/plugins/userManager/userManager.xqm]
local:list-users(xs:string?) [195:70:/db/apps/dashboard/plugins/userManager/controller.xql]
at org.exist.xquery.functions.securitymanager.UMaskFunction.eval(UMaskFunction.java:79) ~[exist.jar:?]
at org.exist.xquery.BasicFunction.eval(BasicFunction.java:73) ~[exist.jar:?]
at org.exist.xquery.InternalFunctionCall.eval(InternalFunctionCall.java:41) ~[exist.jar:?]
at org.exist.xquery.AbstractExpression.eval(AbstractExpression.java:71) ~[exist.jar:?]
at org.exist.xquery.PathExpr.eval(PathExpr.java:267) ~[exist.jar:?]
at org.exist.xquery.EnclosedExpr.eval(EnclosedExpr.java:81) ~[exist.jar:?]
at org.exist.xquery.AbstractExpression.eval(AbstractExpression.java:71) ~[exist.jar:?]
at org.exist.xquery.PathExpr.eval(PathExpr.java:267) ~[exist.jar:?]
at org.exist.xquery.ElementConstructor.eval(ElementConstructor.java:318) ~[exist.jar:?]
at org.exist.xquery.AbstractExpression.eval(AbstractExpression.java:71) ~[exist.jar:?]
at org.exist.xquery.PathExpr.eval(PathExpr.java:267) ~[exist.jar:?]
at org.exist.xquery.ElementConstructor.eval(ElementConstructor.java:318) ~[exist.jar:?]
at org.exist.xquery.UserDefinedFunction.eval(UserDefinedFunction.java:155) ~[exist.jar:?]
at org.exist.xquery.DynamicCardinalityCheck.eval(DynamicCardinalityCheck.java:74) ~[exist.jar:?]
at org.exist.xquery.DynamicTypeCheck.eval(DynamicTypeCheck.java:61) ~[exist.jar:?]
at org.exist.xquery.FunctionCall.evalFunction(FunctionCall.java:302) ~[exist.jar:?]
at org.exist.xquery.FunctionCall.eval(FunctionCall.java:223) ~[exist.jar:?]
at org.exist.xquery.DebuggableExpression.eval(DebuggableExpression.java:58) ~[exist.jar:?]
at org.exist.xquery.DebuggableExpression.eval(DebuggableExpression.java:65) ~[exist.jar:?]
at org.exist.xquery.ForExpr.processItem(ForExpr.java:239) ~[exist.jar:?]
at org.exist.xquery.ForExpr.eval(ForExpr.java:179) ~[exist.jar:?]
at org.exist.xquery.AbstractExpression.eval(AbstractExpression.java:71) ~[exist.jar:?]
at org.exist.xquery.PathExpr.eval(PathExpr.java:267) ~[exist.jar:?]
at org.exist.xquery.EnclosedExpr.eval(EnclosedExpr.java:81) ~[exist.jar:?]
at org.exist.xquery.AbstractExpression.eval(AbstractExpression.java:71) ~[exist.jar:?]
at org.exist.xquery.PathExpr.eval(PathExpr.java:267) ~[exist.jar:?]
at org.exist.xquery.ElementConstructor.eval(ElementConstructor.java:318) ~[exist.jar:?]
at org.exist.xquery.UserDefinedFunction.eval(UserDefinedFunction.java:155) ~[exist.jar:?]
at org.exist.xquery.DynamicCardinalityCheck.eval(DynamicCardinalityCheck.java:74) ~[exist.jar:?]
at org.exist.xquery.DynamicTypeCheck.eval(DynamicTypeCheck.java:61) ~[exist.jar:?]
at org.exist.xquery.FunctionCall.evalFunction(FunctionCall.java:302) ~[exist.jar:?]
at org.exist.xquery.FunctionCall.eval(FunctionCall.java:223) ~[exist.jar:?]
at org.exist.xquery.DebuggableExpression.eval(DebuggableExpression.java:58) ~[exist.jar:?]
at org.exist.xquery.ConditionalExpression.eval(ConditionalExpression.java:102) ~[exist.jar:?]
at org.exist.xquery.UserDefinedFunction.eval(UserDefinedFunction.java:155) ~[exist.jar:?]
at org.exist.xquery.DynamicCardinalityCheck.eval(DynamicCardinalityCheck.java:74) ~[exist.jar:?]
at org.exist.xquery.DynamicTypeCheck.eval(DynamicTypeCheck.java:61) ~[exist.jar:?]
at org.exist.xquery.FunctionCall.evalFunction(FunctionCall.java:302) ~[exist.jar:?]
at org.exist.xquery.FunctionCall.eval(FunctionCall.java:223) ~[exist.jar:?]
at org.exist.xquery.ConditionalExpression.eval(ConditionalExpression.java:100) ~[exist.jar:?]
at org.exist.xquery.AbstractExpression.eval(AbstractExpression.java:71) ~[exist.jar:?]
at org.exist.xquery.PathExpr.eval(PathExpr.java:267) ~[exist.jar:?]
at org.exist.xquery.SequenceConstructor.eval(SequenceConstructor.java:84) ~[exist.jar:?]
at org.exist.xquery.ConditionalExpression.eval(ConditionalExpression.java:100) ~[exist.jar:?]
at org.exist.xquery.AbstractExpression.eval(AbstractExpression.java:71) ~[exist.jar:?]
at org.exist.xquery.PathExpr.eval(PathExpr.java:267) ~[exist.jar:?]
at org.exist.xquery.SequenceConstructor.eval(SequenceConstructor.java:84) ~[exist.jar:?]
at org.exist.xquery.AbstractExpression.eval(AbstractExpression.java:71) ~[exist.jar:?]
at org.exist.xquery.PathExpr.eval(PathExpr.java:267) ~[exist.jar:?]
at org.exist.xquery.AbstractExpression.eval(AbstractExpression.java:71) ~[exist.jar:?]
at org.exist.xquery.XQuery.execute(XQuery.java:253) ~[exist.jar:?]
at org.exist.xquery.XQuery.execute(XQuery.java:185) ~[exist.jar:?]
at org.exist.http.urlrewrite.XQueryURLRewrite.runQuery(XQueryURLRewrite.java:697) ~[exist-optional.jar:?]
at org.exist.http.urlrewrite.XQueryURLRewrite.service(XQueryURLRewrite.java:256) ~[exist-optional.jar:?]
... 30 more
Changing $login
to login:set-user
on
dashboard/plugins/userManager/controller.xql
Line 188 in 6b9b6d1
But this bypasses the login-helper, which checks for the presence of the persistent login module. I have no idea why the original code doesn't work.
@adamretter commented on Nov 8, 2018, 7:07 PM UTC:
This issue was moved by joewiz from eXist-db/existdb-dashboard#10.
To create stable releases docker uses the master branch of the main repo. As of a few days ago the list of autodeploy apps on 4.6.1 is:
which means :release
comes with a broken dashboard, 4.x builds should continue to ship with dashboard 1.x.
no clue why, but this is urgent, also for 4.7.0. Most of our own tests are broken because of this, and production systems using docker will be as well.
Tested on exist-db 4.2.0
and 5.0.0-SNAPSHOT-e867da955
with Dashboard 1.1.0
and both in FF and Safari
Launching apps from dashboard no longer works as expected.
To reproduce on a clean installation, install e.g. the documentation or new package manger (any app will do) apps. then try to go to the app by clicking on it's icon either on dashboard or from inside package-manager.
Apps installed:
<exist:result xmlns:exist="http://exist.sourceforge.net/NS/exist">
<exist:collection name="/db/apps/packagemanager" created="2018-06-08T10:42:47.41Z" owner="admin" group="dba" permissions="rwxrwxr-x">
<exist:resource name="login.html" created="2018-06-08T10:42:47.415Z" last-modified="2018-06-08T10:42:47.415Z" owner="admin" group="dba" permissions="rwxrwxr-x"/>
<exist:resource name="configuration.xml" created="2018-06-08T10:42:47.463Z" last-modified="2018-06-08T10:42:47.463Z" owner="admin" group="dba" permissions="rwxrwxr-x"/>
</exist:collection>
</exist:result>
If I check the contents of the apps collection in /db/apps/xxx
it appears empty.
Force reloading seems to resolve the issue.
It shouldn't matter how an application was installed, and users should not have to force-reload when navigating from the dashboard to individual apps, thats what it is there for after all.
In the version 3.1.1 the User Manager package does not work properly. If I check Remember Me checkbox during logging in, there are neither users nor groups listed. There is only “We are sorry, an error has happened”. It is interesting the sentence is in Czech, hence it could somehow be associated with browsers or Java plugin (tested in Firefox 52.0.2 and IE 11). As soon as I uncheck the box during logging in, User Manager works as expected.
@joewiz commented on Jan 21, 2019, 11:19 AM UTC:
From eXist-db/exist#2408 (comment):
If the new Dashboard is final, why don't we just import the code into the old repo. Git will save everything for us so we can always go back...
See also #13 (comment).
This issue was moved by joewiz from eXist-db/existdb-dashboard#15.
the relevant passage from the log:
javax.servlet.ServletException: An error occurred while processing request to /exist/apps/dashboard/: err:XPST0017 error found while loading module login: Error while loading module resource:org/exist/xquery/modules/persistentlogin/login.xql: Function xmldb:is-admin-user() is not defined in module namespace: http://exist-db.org/xquery/xmldb [at line 78, column 24]
31 Mar 2014 19:55:12,096 [eXistThread-43] WARN (ServletHandler.java [doHandle]:492) -
javax.servlet.ServletException: An error occurred while processing request to /exist/apps/dashboard/plugins/browsing/contents/: err:XPDY0002 variable '$err:message' is not set. [at line 31, column 24, source: /db/apps/dashboard/plugins/browsing/service.xql]
In function:
service:delete-resources(xs:string*) [46:43:/db/apps/dashboard/plugins/browsing/service.xql]
restxq:call-with-args(function, function*) [88:17:/db/apps/dashboard/modules/restxq.xql]
(function, element(), map) [83:68:/db/apps/dashboard/modules/restxq.xql]
restxq:function-by-annotation(function+, map, function) [83:9:/db/apps/dashboard/modules/restxq.xql]
restxq:process(xs:string?, function+) [49:9:/db/apps/dashboard/modules/restxq.xql]
at org.exist.http.urlrewrite.XQueryURLRewrite.service(XQueryURLRewrite.java:386)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
Caused by: org.exist.xquery.XPathException: err:XPDY0002 variable '$err:message' is not set. [at line 31, column 24, source: /db/apps/dashboard/plugins/browsing/service.xql]
In function:
service:delete-resources(xs:string*) [46:43:/db/apps/dashboard/plugins/browsing/service.xql]
restxq:call-with-args(function, function*) [88:17:/db/apps/dashboard/modules/restxq.xql]
(function, element(), map) [83:68:/db/apps/dashboard/modules/restxq.xql]
restxq:function-by-annotation(function+, map, function) [83:9:/db/apps/dashboard/modules/restxq.xql]
restxq:process(xs:string?, function+) [49:9:/db/apps/dashboard/modules/restxq.xql]
at org.exist.xquery.VariableReference.eval(VariableReference.java:87)
at org.exist.xquery.AbstractExpression.eval(AbstractExpression.java:71)
after the upgrade the login problem (first login fails seemingly) was gone.
the other apps which require authentication (Collection Browser and UserManager2)
refuse to work despite correct login.
exist.log
2016-01-18 12:32:56,940 [eXistThread-31] WARN (ServletHandler.java [doHandle]:538) -
javax.servlet.ServletException: An error occurred while processing request to /exist/apps/dashboard/plugins/userManager/api/group/: exerr:ERROR You must be an authenticated user [at line 89, column 41, source: /db/apps/dashboard/plugins/userManager/userManager.xqm]
In function:
usermanager:list-groups() [77:5:/db/apps/dashboard/plugins/userManager/userManager.xqm]
Peter
Javascript code for handling changes to Owner, Group, Mime has been commented out due to changes in handling permissions. User input will not be saved.
Dates (created, modified) are text input fields - but should not be modifiable.
Owner and Group fields are text input fields - allowing incorrect entry (non-existent owner or group).
Access Control List shows "Loading..." but doesn't.
(These issues are all fixed in pull-request #25)
"Add Access Control Entry..." doesn't function.
(not fixed)
the old exist-dashboard repo should have a message in bold type like:
"This repo is deprecated and read-only. New location is 'eXist-db/dashboard"
As all code and issues have been moved the whole repo could also be deleted.
Deinstalling XARs in the PackageManager fails in IE8 on Windows XP. The issue has somehow to do with hiding of the dialogs.
For testing reasons I removed the two calls
from util.js. Afterwars uninstalling XARs works fine (but for sure the dialog does not close anymore).
Hi,
I'm trying to access the dashboard but was presented with errors like such:
How can I see the Dashboard again?
Please advise.
javax.servlet.ServletException: An error occurred while processing request to /exist/apps/dashboard/index.html: err:XPST0081 error found while loading module restxq: Error while loading module modules/restxq.xql: Invalid qname text:groups
at org.exist.http.urlrewrite.XQueryURLRewrite.service(XQueryURLRewrite.java:381)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:841)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1650)
at de.betterform.agent.web.filter.XFormsFilter.doFilter(XFormsFilter.java:171)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1629)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:533)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:524)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:190)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1595)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:188)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1253)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:168)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:166)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1155)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:219)
at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126)
at org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:521)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
at org.eclipse.jetty.server.Server.handle(Server.java:564)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:317)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:251)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:279)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:110)
at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:124)
at org.eclipse.jetty.util.thread.Invocable.invokePreferred(Invocable.java:128)
at org.eclipse.jetty.util.thread.Invocable$InvocableExecutor.invoke(Invocable.java:222)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:294)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:199)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:673)
at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:591)
at java.lang.Thread.run(Thread.java:748)
Caused by: org.exist.xquery.XPathException: err:XPST0081 error found while loading module restxq: Error while loading module modules/restxq.xql: Invalid qname text:groups
at org.exist.xquery.FunctionFactory.createFunction(FunctionFactory.java:49)
at org.exist.xquery.parser.XQueryTreeParser.functionCall(XQueryTreeParser.java:10429)
at org.exist.xquery.parser.XQueryTreeParser.primaryExpr(XQueryTreeParser.java:7348)
at org.exist.xquery.parser.XQueryTreeParser.expr(XQueryTreeParser.java:3561)
at org.exist.xquery.parser.XQueryTreeParser.functionCall(XQueryTreeParser.java:10408)
at org.exist.xquery.parser.XQueryTreeParser.primaryExpr(XQueryTreeParser.java:7348)
at org.exist.xquery.parser.XQueryTreeParser.expr(XQueryTreeParser.java:3561)
at org.exist.xquery.parser.XQueryTreeParser.expr(XQueryTreeParser.java:1879)
at org.exist.xquery.parser.XQueryTreeParser.expr(XQueryTreeParser.java:423)
at org.exist.xquery.parser.XQueryTreeParser.expr(XQueryTreeParser.java:2620)
at org.exist.xquery.parser.XQueryTreeParser.functionDecl(XQueryTreeParser.java:5773)
at org.exist.xquery.parser.XQueryTreeParser.prolog(XQueryTreeParser.java:4905)
at org.exist.xquery.parser.XQueryTreeParser.libraryModule(XQueryTreeParser.java:4028)
at org.exist.xquery.parser.XQueryTreeParser.module(XQueryTreeParser.java:3860)
at org.exist.xquery.parser.XQueryTreeParser.xpath(XQueryTreeParser.java:3642)
at org.exist.xquery.XQueryContext.compileModule(XQueryContext.java:2900)
at org.exist.xquery.XQueryContext.compileOrBorrowModule(XQueryContext.java:2832)
at org.exist.xquery.XQueryContext.importModule(XQueryContext.java:2743)
at org.exist.xquery.parser.XQueryTreeParser.importDecl(XQueryTreeParser.java:5884)
at org.exist.xquery.parser.XQueryTreeParser.prolog(XQueryTreeParser.java:4912)
at org.exist.xquery.parser.XQueryTreeParser.mainModule(XQueryTreeParser.java:4040)
at org.exist.xquery.parser.XQueryTreeParser.module(XQueryTreeParser.java:3985)
at org.exist.xquery.parser.XQueryTreeParser.xpath(XQueryTreeParser.java:3642)
at org.exist.xquery.XQuery.compile(XQuery.java:128)
at org.exist.xquery.XQuery.compile(XQuery.java:79)
at org.exist.xquery.XQuery.compile(XQuery.java:71)
at org.exist.http.urlrewrite.XQueryURLRewrite.runQuery(XQueryURLRewrite.java:687)
at org.exist.http.urlrewrite.XQueryURLRewrite.service(XQueryURLRewrite.java:256)
... 36 more
If the entry in conf.xml for consistency check changes the output parameter from export to another directory, then the backups plugin does not see those backups and list them.
<job type="system" name="check1"
class="org.exist.storage.ConsistencyCheckTask"
cron-trigger="0 0 * * * ?">
<parameter name="output" value="export"/>
<parameter name="backup" value="yes"/>
<parameter name="incremental" value="no"/>
<parameter name="incremental-check" value="no"/>
<parameter name="max" value="2"/>
</job>
In backup.xql, then definition of the backup directory is here:
declare variable $backup:BACKUP_DIR := "export";
I have changed the output parameter to another value to place the backup on a network drive:
<job type="system" name="check1" class="org.exist.storage.ConsistencyCheckTask"
cron-trigger="0 5 23 * * ?">
<parameter name="output" value="J:\foo\bar\exist-db\backup"/>
<parameter name="backup" value="yes"/>
<parameter name="incremental" value="no"/>
<parameter name="incremental-check" value="no"/>
<parameter name="max" value="2"/>
</job>
Since the backups that are triggered by the scheduler place the files in an alternate directory, then backup plugin does not see them
See - eXist-db/exist#2767 (comment)
This is quite nasty as it leads the user to believe that everything worked fine and that they have a complete backup of their data, when in fact they may have nothing at all.
2017-07-05 12:08:34,909 [Thread-3] WARN (ClasspathHelper.java [scanPackages]:90) - Package http://exist-db.org/apps/dashboard is not compatible with this version of eXist. To avoid conflicts, Java libraries shipping with this package are not loaded.
anything preventing us from adding sem-ver?
downloading yields into
<exception>
<path>/db/apps/dashboard/plugins/backup/backup.xql</path>
<message>
exerr:ERROR You must be a DBA to retrieve a backup [at line 68, column 36, source: /db/apps/dashboard/plugins/backup/backup.xql] In function: backup:retrieve() [68:36:/db/apps/dashboard/plugins/backup/backup.xql]
</message>
</exception>
but for use I am
The collections browser supports import of resources from filestore but not export to filestore.
This asymmetry isn't desirable and forces the user to use the Java client to accomplish this
Currently they only show the most recent entry in changelog
. This is fine if a user is only a version behind. But if they are more than one version behind they will not be aware of the full extent of changes.
After a group CRUD operation is done in the user dashboard User Manager does not lead to the group view to refresh.
Clicking the UI [todays development] yields into the following trace:
2016-04-01 14:48:03,757 [eXistThread-36] WARN (ServletHandler.java [doHandle]:563) - /exist/apps/dashboard/plugins/scheduler/scheduler.html
org.exist.xquery.XPathException: err:XPST0081 error found while loading module service: Error while loading module service.xql: No namespace defined for prefix xqueries
at org.exist.dom.QName.parse(QName.java:298) ~[exist.jar:?]
at org.exist.xquery.parser.XQueryTreeParser.primaryExpr(XQueryTreeParser.java:6983) ~[exist.jar:?]
at org.exist.xquery.parser.XQueryTreeParser.expr(XQueryTreeParser.java:3489) ~[exist.jar:?]
at org.exist.xquery.parser.XQueryTreeParser.numericExpr(XQueryTreeParser.java:8205) ~[exist.jar:?]
at org.exist.xquery.parser.XQueryTreeParser.expr(XQueryTreeParser.java:3542) ~[exist.jar:?]
at org.exist.xquery.parser.XQueryTreeParser.functionCall(XQueryTreeParser.java:9808) ~[exist.jar:?]
at org.exist.xquery.parser.XQueryTreeParser.primaryExpr(XQueryTreeParser.java:6994) ~[exist.jar:?]
at org.exist.xquery.parser.XQueryTreeParser.expr(XQueryTreeParser.java:3489) ~[exist.jar:?]
at org.exist.xquery.parser.XQueryTreeParser.functionCall(XQueryTreeParser.java:9808) ~[exist.jar:?]
at org.exist.xquery.parser.XQueryTreeParser.primaryExpr(XQueryTreeParser.java:6994) ~[exist.jar:?]
at org.exist.xquery.parser.XQueryTreeParser.expr(XQueryTreeParser.java:3489) ~[exist.jar:?]
at org.exist.xquery.parser.XQueryTreeParser.expr(XQueryTreeParser.java:416) ~[exist.jar:?]
at org.exist.xquery.parser.XQueryTreeParser.expr(XQueryTreeParser.java:1839) ~[exist.jar:?]
at org.exist.xquery.parser.XQueryTreeParser.constructor(XQueryTreeParser.java:9338) ~[exist.jar:?]
at org.exist.xquery.parser.XQueryTreeParser.constructor(XQueryTreeParser.java:9197) ~[exist.jar:?]
at org.exist.xquery.parser.XQueryTreeParser.primaryExpr(XQueryTreeParser.java:6792) ~[exist.jar:?]
at org.exist.xquery.parser.XQueryTreeParser.expr(XQueryTreeParser.java:3489) ~[exist.jar:?]
at org.exist.xquery.parser.XQueryTreeParser.expr(XQueryTreeParser.java:320) ~[exist.jar:?]
at org.exist.xquery.parser.XQueryTreeParser.primaryExpr(XQueryTreeParser.java:6930) ~[exist.jar:?]
at org.exist.xquery.parser.XQueryTreeParser.expr(XQueryTreeParser.java:3489) ~[exist.jar:?]
at org.exist.xquery.parser.XQueryTreeParser.expr(XQueryTreeParser.java:413) ~[exist.jar:?]
at org.exist.xquery.parser.XQueryTreeParser.expr(XQueryTreeParser.java:2567) ~[exist.jar:?]
at org.exist.xquery.parser.XQueryTreeParser.functionDecl(XQueryTreeParser.java:5543) ~[exist.jar:?]
at org.exist.xquery.parser.XQueryTreeParser.prolog(XQueryTreeParser.java:4686) ~[exist.jar:?]
at org.exist.xquery.parser.XQueryTreeParser.libraryModule(XQueryTreeParser.java:3951) ~[exist.jar:?]
at org.exist.xquery.parser.XQueryTreeParser.module(XQueryTreeParser.java:3785) ~[exist.jar:?]
at org.exist.xquery.parser.XQueryTreeParser.xpath(XQueryTreeParser.java:3569) ~[exist.jar:?]
at org.exist.xquery.XQueryContext.compileModule(XQueryContext.java:2919) ~[exist.jar:?]
at org.exist.xquery.XQueryContext.compileOrBorrowModule(XQueryContext.java:2857) ~[exist.jar:?]
at org.exist.xquery.XQueryContext.importModule(XQueryContext.java:2772) ~[exist.jar:?]
at org.exist.xquery.parser.XQueryTreeParser.importDecl(XQueryTreeParser.java:5654) ~[exist.jar:?]
at org.exist.xquery.parser.XQueryTreeParser.prolog(XQueryTreeParser.java:4693) ~[exist.jar:?]
at org.exist.xquery.parser.XQueryTreeParser.mainModule(XQueryTreeParser.java:3963) ~[exist.jar:?]
at org.exist.xquery.parser.XQueryTreeParser.module(XQueryTreeParser.java:3908) ~[exist.jar:?]
at org.exist.xquery.parser.XQueryTreeParser.xpath(XQueryTreeParser.java:3569) ~[exist.jar:?]
at org.exist.xquery.XQuery.compile(XQuery.java:133) ~[exist.jar:?]
at org.exist.xquery.XQuery.compile(XQuery.java:84) ~[exist.jar:?]
at org.exist.xquery.XQuery.compile(XQuery.java:75) ~[exist.jar:?]
at org.exist.http.urlrewrite.XQueryURLRewrite.runQuery(XQueryURLRewrite.java:686) ~[exist-optional.jar:?]
at org.exist.http.urlrewrite.XQueryURLRewrite.service(XQueryURLRewrite.java:260) ~[exist-optional.jar:?]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:848) ~[servlet-api-3.0.jar:?]
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:684) ~[jetty-servlet-8.1.17.v20150415.jar:8.1.17.v20150415]
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1496) ~[jetty-servlet-8.1.17.v20150415.jar:8.1.17.v20150415]
at de.betterform.agent.web.filter.XFormsFilter.doFilter(XFormsFilter.java:171) ~[betterform-exist-5.1-SNAPSHOT-20151014.jar:?]
Issues:
If you have eXist-db behind a reverse nginx proxy, where you wish to remove the /exist prefix, the links on the Dashboard to eXide etc are incorrect. They always try to access /exist.
For example with a standard eXist-db installation and the following nginx config:
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
charset utf-8;
location / {
proxy_pass http://localhost:8080/exist/;
}
}
Accessing http://myserver/ will bring up the Dashboard, however clicking "eXide" or similar will 404 as it will try and take you to http://myserver/exist/apps/eXide/index.html
a space in the "abbrev" field (expath-pkg.xml) of packages loaded via the package manager blows up dashboard (eXide too).
"abbrev" is simply defined as "string" in the EXPath-pkg spec.
regards
Peter Herkenrath
develop branch of exist
Dojo throws an error when JSON store returns null. Queries should always return an (empty) array.
@adamretter commented on Nov 8, 2018, 7:05 PM UTC:
This issue was moved by joewiz from eXist-db/existdb-dashboard#8.
As described in the documentation, a button executing
xquery version "3.0";
import module namespace repair="http://exist-db.org/xquery/repo/repair"
at "resource:org/exist/xquery/modules/expathrepo/repair.xql";
repair:clean-all(),
repair:repair()
would be very handy
after struggling with xar import via package manager
(import.xql hangs, I believe similar problem as abbrev issue in expath-pkg: space in title; not further explored), I tried to delete app dir via collections browser.
I think this should not happen (or collateral damage?):
28 Okt 2014 09:43:37,630 [eXistThread-41] WARN (ServletHandler.java [doHandle]:492) -
javax.servlet.ServletException: An error occurred while processing request to /exist/apps/dashboard/plugins/browsing/contents/:
err:XPDY0002 variable '$err:message' is not set. [at line 31, column 24, source: /db/apps/dashboard/plugins/browsing/service.xql]
In function:
service:delete-resources(xs:string*) [46:43:/db/apps/dashboard/plugins/browsing/service.xql]
restxq:call-with-args(function, function*) [88:17:/db/apps/dashboard/modules/restxq.xql]
(function, element(), map) [83:68:/db/apps/dashboard/modules/restxq.xql]
restxq:function-by-annotation(function+, map, function) [83:9:/db/apps/dashboard/modules/restxq.xql]
restxq:process(xs:string?, function+) [49:9:/db/apps/dashboard/modules/restxq.xql]
at org.exist.http.urlrewrite.XQueryURLRewrite.service(XQueryURLRewrite.java:383)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
Last collection or document is not displayed in the list of resources.
As originally implemented for 1.x in #36. Needs a 2.x implementation.
Both the Dashboard and Shared Resources apps ship with the Templating module. Unfortunately they both ship with different versions, and try and use the same namespace.
$EXIST_HOME/webapp/WEB-INF/data/expathrepo/shared-0.4.2/content/templates.xql
:
xquery version "3.0";
(:~
: HTML templating module
:
: @version 2.1
: @author Wolfgang Meier
: @contributor Adam retter
:)
module namespace templates="http://exist-db.org/xquery/templates";
...
$EXIST_HOME/webapp/WEB-INF/data/expathrepo/dashboard-0.4.7/modules/templates.xql
:
xquery version "3.0";
module namespace templates="http://exist-db.org/xquery/templates";
(:~
: HTML templating module
:
: @version 2.0
: @author Wolfgang Meier
:)
...
Either the Dashboard should rely on the Shared Resources, or Templating should be moved into its own library module which Dashboard then relies on.
I use two eXist-db instances: one for writing code and one for testing deployment.
So that I don't confuse the two, I've resorted to changing the dashboard CSS for one of them so that its dashboard has a different background colour.
It seems to me that it could be useful if the dashboard supported predefined alternative colour schemes, as a minimum, so that it's simple to differentiate the dashboards of different eXist instances.
I like the Java Admin app but for an unknown reason, I am not able to start it (since, let’s say, February). I thought it could be because of some new Java version but it is the same on Linux and Win 10 or Win 7 machine.
After the verification, it throws an error (window). In the Details section there is:
com.sun.deploy.net.JARSigningException: Found unsigned entry in resource: http://46.28.111.241:8081/exist/webstart/exist.jar
at com.sun.javaws.security.SigningInfo.getCommonCodeSignersForJar(Unknown Source)
at com.sun.javaws.security.SigningInfo.check(Unknown Source)
at com.sun.javaws.security.JNLPSignedResourcesHelper.checkSignedResourcesHelper(Unknown Source)
at com.sun.javaws.security.JNLPSignedResourcesHelper.checkSignedResources(Unknown Source)
at com.sun.javaws.Launcher.prepareResources(Unknown Source)
at com.sun.javaws.Launcher.prepareAllResources(Unknown Source)
at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source)
at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source)
at com.sun.javaws.Launcher.launch(Unknown Source)
at com.sun.javaws.Main.launchApp(Unknown Source)
at com.sun.javaws.Main.continueInSecureThread(Unknown Source)
at com.sun.javaws.Main.access$000(Unknown Source)
at com.sun.javaws.Main$1.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
and
<?xml version="1.0" ?><jnlp spec="7.0" codebase="http://46.28.111.241:8081/exist/webstart/" href="exist.jnlp"><information><title>eXist XML-DB client</title><vendor>exist-db.org</vendor><homepage href="http://exist-db.org"></homepage><description>Integrated command-line and gui client, entirely based on the XML:DB API and provides commands for most database related tasks, like creating and removing collections, user management, batch-loading XML data or querying.</description><description kind="short">eXist XML-DB client</description><description kind="tooltip">eXist XML-DB client</description><icon href="jnlp_logo.jpg"></icon><icon href="jnlp_icon_128x128.gif" width="128" height="128"></icon><icon href="jnlp_icon_64x64.gif" width="64" height="64"></icon><icon href="jnlp_icon_32x32.gif" width="32" height="32"></icon></information><security><all-permissions/></security><resources><property name="jnlp.packEnabled" value="true"></property><java version="1.8+"></java><jar href="xmlrpc-common-3.1.3.jar" size="122351"></jar><jar href="sunxacml-1.2.jar" size="210074"></jar><jar href="jline-0.9.94.jar" size="93057"></jar><jar href="rsyntaxtextarea-2.5.6.jar" size="1081139"></jar><jar href="xmlrpc-client-3.1.3.jar" size="65437"></jar><jar href="ws-commons-util-1.0.2.jar" size="38457"></jar><jar href="log4j-jul-2.3.jar" size="24060"></jar><jar href="slf4j-api-1.7.10.jar" size="36571"></jar><jar href="exist.jar" size="4482013"></jar><jar href="xmldb.jar" size="12722"></jar><jar href="commons-io-2.4.jar" size="198441"></jar><jar href="log4j-slf4j-impl-2.3.jar" size="25551"></jar><jar href="log4j-core-2.3.jar" size="889605"></jar><jar href="excalibur-cli-1.0.jar" size="25946"></jar><jar href="log4j-api-2.3.jar" size="146688"></jar><jar href="commons-pool-1.6.jar" size="118633"></jar></resources><application-desc main-class="org.exist.client.InteractiveClient"><argument>-ouri=xmldb:exist://46.28.111.241:8081/exist/xmlrpc</argument><argument>--no-embedded-mode</argument></application-desc></jnlp>
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.