Oracle XML DB поддерживает Java Servlet API версии 2.2 с некоторыми ограничениями, и с возможностью дополнительно установить сервлет поддержки JSP.
Подготовим текст сервлета в файле XMLDBServlet.java:
import java.io.PrintWriter; import java.io.IOException; import javax.servlet.GenericServlet; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.ServletException;
public class XMLDBServlet extends GenericServlet {
public void service ( ServletRequest request
, ServletResponse response
) throws ServletException, IOException {
String s = request.getParameter ( "rex" );
response.setContentType ( "text/xml" );
PrintWriter out = response.getWriter ( ); out.println ( "<?xml version=\"1.0\"?>" ); out.println ( "<html><head>" ); out.println ( "<title>My XMLDBServlet servlet demo</title>" ); out.println ( "</head><body>" ); out.println ( "<h2>Ave, " + s + " !</h2>" ); out.println ( "</body></html>" ); out.close ( ); } }
Пример ради общности рассматривает употребление суперкласса GenericServlet, а не HttpServlet.
Загрузим сервлет в БД одним из возможных способов:
>loadjava -grant public -u scott/tiger -r XMLDBServlet.java
Проверкой легко убедиться, что СУБД не только загрузит в БД исходный текст, но и получит из него класс.
Чтобы сервлет мог вызываться извне, сведения о нем требуется занести в ресурс-файл /xdbconfig.xml в репозитарии XML DB. Это файл с «объектно-реляционным» храненнем, и подправить его можно либо через WebDAV (системами, обеспечивающими такую правку), либо обычными функциями UPDATEXML и прочими. (Именно этот файл не допускает удаления из репозитария, поэтому выгрузить его, подправить и загрузить заново невозможно).
Однако при желании, для удобства правки файла /xdbconfig.xml можно использовать специально созданые для этого подпрограммы пакета DBMS_XDB. Выполним в SQL*Plus от имени пользователя XDB: