SOAP web services
There is a way to expose SOAP web services via servlet container. Fo example, Tomcat web server (https://tomcat.apache.org).
All existing queries are exposed as web services.
edom3 based services
Normally EDMWS was used as a name of a web application with SOAP web services.
The web application should have configuration file like the following.
Â
<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<display-name>Tomcat Documentation</display-name>
<description>
Tomcat Documentation.
</description>
<!--
<context-param>
<param-name>edm.trace.file</param-name>
<param-value>c:\edmTrace.log</param-value>
<description>Enables EDM trace. EDM trace will be written to the specified file.</description>
</context-param>
<context-param>
<param-name>soap.input.file</param-name>
<param-value>c:\soapMessageFromClient.xml</param-value>
<description> Every soap message from the clients are copied to this file </description>
</context-param>
<context-param>
<param-name>soap.output.file</param-name>
<param-value>c:\soapMessageToClient.xml</param-value>
<description> Every soap message from the server returned to a client is copied to this file </description>
</context-param>
-->
<context-param>
<param-name>always.write.access</param-name>
<param-value>off</param-value>
<description>The data model is always opened in write mode</description>
</context-param>
<context-param>
<param-name>log.directory</param-name>
<param-value> path to log directory </param-value>
<description>
The directory where log files are created. If not defined, java.io.tmpdir is used as log directory
</description>
</context-param>
<context-param>
<param-name>edm.host</param-name>
<param-value>localhost</param-value>
<description>The adresse to the machine the EDM server is running on.</description>
</context-param>
<context-param>
<param-name>edm.port</param-name>
<param-value>9090</param-value>
<description>The port the EDM server is listening on. </description>
</context-param>
<context-param>
<param-name>web.application.address</param-name>
<param-value>http://localhost:8080/EDMWS</param-value>
<description>The address of this web application.</description>
</context-param>
<servlet>
<servlet-name>WSDLGenerator</servlet-name>
<description>WSDL generator servlet</description>
<servlet-class>edmws.webapp.servlets.WSDLGenerator</servlet-class>
<load-on-startup>5</load-on-startup>
</servlet>
<servlet>
<servlet-name>AccessControl</servlet-name>
<description>Access Control Servlet</description>
<servlet-class>edmws.webapp.servlets.LoginServlet</servlet-class>
<load-on-startup>5</load-on-startup>
</servlet>
<servlet>
<servlet-name>earlybinding</servlet-name>
<description>Servlet that handles SOAP messages for execution of queries.</description>
<servlet-class>edmws.webapp.servlets.ExecuteQuery</servlet-class>
<load-on-startup>5</load-on-startup>
</servlet>
<servlet>
<servlet-name>Admin</servlet-name>
<description> Servlet that define logging parameters for an logged on session. </description>
<servlet-class>edmws.webapp.servlets.AdminServlet</servlet-class>
<load-on-startup>5</load-on-startup>
</servlet>
<servlet>
<servlet-name>HttpFileTransfer</servlet-name>
<description>Description for HttpFileTransfer</description>
<servlet-class>edmws.webapp.servlets.HttpFileTransfer</servlet-class>
<load-on-startup>5</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>earlybinding</servlet-name>
<url-pattern>/earlybinding/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>WSDLGenerator</servlet-name>
<url-pattern>/WSDLGenerator/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AccessControl</servlet-name>
<url-pattern>/AccessControl/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Admin</servlet-name>
<url-pattern>/Admin/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>HttpFileTransfer</servlet-name>
<url-pattern>/HttpFileTransfer/*</url-pattern>
</servlet-mapping>
</web-app>
EDMconnect based services
Edom3 library is not really supported currently.
So it was decided to port web service functionality with using edmconnect library.
EDMWS web application (name can be different) should have the following content
├── META-INF
├── WEB-INF
├── lib
│ ├── edmconnect.jar
│ └── edmws_edmconnect.jar
└── web.xml
Where web.xml should look in the following way.
Note, servlet names are remained the same for compatibility
Â
<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<display-name>EDMweb</display-name>
<context-param>
<param-name>edm.host</param-name>
<param-value>192.168.10.17</param-value>
</context-param>
<context-param>
<param-name>edm.port</param-name>
<param-value>9090</param-value>
</context-param>
<listener>
<listener-class>edmws.webapp.servlets.EDMWSListener</listener-class>
</listener>
<servlet>
<servlet-name>SOAPServlet</servlet-name>
<servlet-class>edmws.webapp.servlets.SOAPServlet</servlet-class>
<load-on-startup>5</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>SOAPServlet</servlet-name>
<url-pattern>/AccessControl/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>SOAPServlet</servlet-name>
<url-pattern>/earlybinding/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>SOAPServlet</servlet-name>
<url-pattern>/WSDLGenerator/*</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>EDMRemoteServlet</servlet-name>
<servlet-class>edmws.webapp.servlets.EDMRemoteServlet</servlet-class>
<load-on-startup>5</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>EDMRemoteServlet</servlet-name>
<url-pattern>/EDMRemote/*</url-pattern>
</servlet-mapping>
</web-app>
AccessControl
Wsdl document with login and logout services can be retrieved from the URL like the following
http://localhost:8080/EDMWS/WSDLGenerator?accesscontrol=yes&user=superuser&password=db