Changes

Jump to navigation Jump to search
828 bytes removed ,  11:22, 22 October 2018
no edit summary
This page is part of the [[Getting Started]] Section. It describes how BaseX can be used as [[Web Application]]to both provide simple APIs and build complex web applications. The following three HTTP services are availableprovided:
* {| class="wikitable" |- valign="top"! Name! Standard Path! Description|- valign="top"| [[RESTXQ]] allows you to write | <code>/</code>| Write enriched APIs and full web applications with XQuery,.|- valign="top"| [[WebSockets]]| <code>ws/</code>| Bidirectional client/server communication.|- valign="top"* | [[REST]] offers a RESTful API for accessing database | <code>rest/</code>| Straightforward access to XML databases and its resources via URLs, and.|- valign="top"* | [[WebDAV]] provides | <code>webdav/</code>| Database access to databases via the file system.|- valign="top"| Default| <code>static/</code>| Access to static server resources (HTML, JavaScript, CSS, images, …).|}
This article describes different ways of deploying and configuring these services. The services can be deployed as follows:==Deployment==
This article describes different ways of deploying and configuring these services. BaseX can be deployed as follows: * as standalone application , by running the [[Startup#HTTP Server|BaseX HTTP Server]],
* as web servlet in a [[#Servlet Container|Servlet Container]], and
* as web servlet, using [[#Maven|Maven]].<br/><br/>
=Servlet Container=
In order to deploy BaseX HTTP Services in a servlet container, you may can download the WAR distribution of BaseX from the [http://basex.org/download download site] , or compile it via by calling <code>mvn compile war:war</code> in the <code>basex-api</code> packagedirectory. The WAR file can then be deployed following the instructions of the corresponding servlet container ([http://www.eclipse.org/jetty/documentation/current/quickstart-deploying-webapps.html jetty], [http://tomcat.apache.org/tomcat-7.0-doc/deployer-howto.html tomcat], etc.).
Configuring You can configure the port, context path, etc. can be done by following the corresponding instructions of the used corresponding servlet container. This is needed if you want to replace the default URL path (e.g. http://localhost:8080/rest) with a custom one (e.g. http://localhost:80808984/BaseX711basex/rest).
If run on a you use Jetty (which is the default HTTP server of BaseX), the server you may use a configuration is available via the {{Code|jetty.xml}} file for detailed server configuration. You can e.g. enable SSL connections or Jetty logging. Place , which is stored in the {{Code|jetty.xmlWEB-INF}} right directory next to the {{Code|web.xml}}. For detailed configuration refer to the [http://wikiwww.eclipse.org/Jetty/Reference/jetty.xml Jetty Documentation]. A sample [https:/documentation/github.comcurrent/BaseXdb/basex/blob/master/basexjetty-api/src/main/webapp/WEBxml-INF/jettyconfig.xml jetty.xmlhtml Jetty Documentation] is placed in the basex-api package.
To run on [http://tomcat.apache.org/ Apache Tomcat], start the tomcat Tomcat server and add any <code>*.war</code> distribution to deploy using via the Tomcat web interface. By default, the interface is accessible via http://localhost:8080/manager/html/.
==Configuration==
All Initial database options can be specified in the {{Code|web.xml}} file.They need to be represented defined as context parameters and prefixed with {{Code|org.basex.}}.The most important options for the web application context are as follows:
{| class="wikitable"
|<code>[[Options#USER|USER]]</code>
|{{Code|admin}}
| Applies to REST and WebDAV service: If no a user is specified, the no credentials must be passed on by the client. Please check by yourself if it is safe to store your credentials in plain text.|-|<code>[[Options#USER|PASSWORD]]</code>|{{Code|admin}}| Applies to REST and WebDAV service: If no password is specified, it must be passed on by the client. Please check by yourself if it is safe to store your credentials in plain text.
|-
|<code>[[Options#HTTPLOCAL|HTTPLOCAL]]</code>
|}
Path Local file paths in options may contain an be absolute or relative path. If a relative path is specified, its root will be the servlet ({{Code|webapp}}) path:
<pre class="brush:xml">
<context-param> <param-name>org.basex.dbpath</param-name> <!-- will be rewritten to ..../webapp/WEB-INF/data --> <param-value>WEB-INF/data</param-value> </context-param> <context-param> <param-name>org.basex.repopath</param-name> <!-- will be kept as is --> <param-value>f:/basex/repository</param-value> </context-param>
</pre>
Context parameters can be requested from XQuery via [[Process_Module#proc:property-names|proc:property-names]] and [[Process_Module#proc:property|proc:property]]. How to set these options is specific to the servlet container. For example, in Jetty it can be done by [http://www.eclipse.org/jetty/documentation/current/override-web-xml.html overriding the web.xml] file. Another option is to directly edit the {{Code|WEB-INF/web.xml}} file in the WAR archive (WAR files are simple ZIP files). Refer to the sample [https://github.com/BaseXdb/basex/blob/master/basex-api/src/main/webapp/WEB-INF/web.xml web.xml] of the basex-api package.
To enable or disable a specific service, the corresponding servlet entry in the {{Code|web.xml}} file needs to be removed/commented. ==Authentication== Different credentials can be assigned to the REST and WebDAV a service by specifying local init parameters. In the following example, specific credentials are set an alternative user is specified for the REST service:
<pre class="brush:xml">
<servlet> <servlet-name>REST</servlet-name> <servlet-class>org.basex.http.rest.RESTServlet</servlet-class> <init-param> <param-name>org.basex.user</param-name> <param-value>rest-user</param-value> </init-param> <init-param> <param-name>org.basex.password</param-name> <param-value>(:87!7X3$o3p</param-value> </init-param> </servlet>
</pre>
==Available Services==If the HTTP server is started with no pre-defined user, the credentials must be passed on by the client via [http://en.wikipedia.org/wiki/Basic_access_authentication Basic Authentication] or [http://en.wikipedia.org/wiki/Digest_authentication Digest Authentication] (depending on the server setting). With cURL, internet browsers, and other tools, you can specify basic authentication credentials within the request string as plain text, using the format <code>USER:PASSWORD@URL</code>. An example:
To enable or disable one of the provided services, the corresponding servlet entry in the {{Code|web.xml}} file needs to be removed: <code>http://commented. The default URL paths are listed in the following tableadmin:admin@localhost:8984/</code>
{| class="wikitable" |- valign="top"! Service! URL! Usage|- valign="top"| Default web server| Users are specified in a {{Code|http://[host]:[port]/[servlet_context_path]/staticusers.xml}}| Access your standard web files (e.g. HTMLfile, JavaScript or CSS).|- valign="top"| [[RESTXQ]]| {{Code|http://[host]:[port]/[servlet_context_path]}}| Create XQuery web services and applications.|- valign="top"| [[REST]]| {{Code|http://[host]:[port]/[servlet_context_path]/rest}}| Access XML which is stored in the database and its resources.|- valign="top"| directory (see [[WebDAV]User Management]| {{Code|http://[host]:[port]/[servlet_context_path]/webdav}} or<br/>{{Code|webdav://[host]:[port]/[servlet_context_path]/webdav}} (depending on clientfor more information)| Access databases via the filesystem.|}
=Maven=
Checkout Check out the BaseX sources via [[Developing with Eclipse|Eclipse]] or [[Git]]. Execute <code>mvn install</code> in the main project directory and then <code>mvn install jetty:run</code> in the <code>basex-api</code> sub-directory. This will start a Jetty instance in which the servlets will be deployed.
==Configuration==
The same options as in the case of deployment apply in a servlet container apply. In this case, however, there is no WAR archive. Instead, Jetty looks up all files in the directory <code>[https://github.com/BaseXdb/basex/tree/master/basex-api/src/main/webapp basex-api/src/main/webapp]</code>. Jetty and servlet options can be configured in the {{Code|jetty.xml}} and {{Code|web.xml}} files as described above in the [[#Configuration|Servlet Container Configuration]]. The Jetty stop port can be changed in the [http://docs.codehaus.org/display/JETTY/Maven+Jetty+Plugin Maven Jetty Plugin] sesion in the {{Code|pom.xml}} file.
=User ManagementChangelog=
By default, the REST and WebDAV services require client-side authentication;Version 9.0Default credentials can be stored server-side in the * Updated: <code>webjetty.xml</code> configuration file or specified via[[Command-Line Options#BaseX HTTP Server|command-line arguments]].If the HTTP server is started with no pre-defined credentials, users and passwords can be sent via[http://en.wikipedia.org/wiki/Basic_access_authentication HTTP Basic Authentication] or[http://en.wikipedia.org/wiki/Digest_authentication Digest Authentication](required for Jetty 9).
Users are specified in a {{Code|users;Version 8.xml}} file, which is stored in the database directory (see [[User Management]] for more information)6* Updated: Authentication readded to RESTXQWith cURL, and most browsers, you can specify the user name and * Updated: No password with each HTTP request within must be specified in the request string as plain text, using the format <code>USER:PASSWORD@URLweb.xml</code>file anymore. An example: * Updated: <code>http://admin:admin@localhost:8984/</code> =Changelog=Server-side user and authentication method is now enforced (cannot be overwritten by client).
;Version 8.0
Bureaucrats, editor, reviewer, Administrators
13,550

edits

Navigation menu