This chapter describes how to configure web services for use with Oracle Event Processing, including how to invoke services from an Oracle Event Processing application and expose an Oracle Event Processing application as a web service.
This chapter includes the following sections:
Section 14.1, "Understanding Oracle Event Processing and Web Services"
Section 14.2, "How to Invoke a Web Service From an Oracle Event Processing Application"
Section 14.3, "How to Expose an Oracle Event Processing Application as a Web Service"
You can integrate an Oracle Event Processing application with other systems using Web Services.
Oracle Event Processing supports version 2.0 of the JAX-WS API standard using the Glassfish reference implementation of JAX-WS 2.0, including:
JAX-WS 2.0 (Java API for XML Web Services, defined in JSR 224)
WS-I Basic Profile 1.1
WS-I Attachments Profile 1.0 (SOAP Messages with Attachments)
WS-I Simple SOAP Binding Profile 1.0
SOAP 1.1 and 1.2 (Simple Object Access Protocol)
MTOM (Message Transmission Optimization Mechanism)
WSDL 1.1 (Web Services Definition Language)
JAXB 2.0 (Java API for XML Binding, references through a separate JAXB module)
SAAJ 1.3 (SOAP with Attachments API for Java)
This procedure describes how to create an Oracle Event Processing application that invokes a Web Service. In this scenario, the Oracle Event Processing application is the Web Service client.
To invoke a Web Service from an Oracle Event Processing application:
Create or obtain the WSDL for the Web Service.
In this example, assume the use of a WSDL named EchoService.WSDL
.
Generate the compiled .class
files you will use to invoke the Web Service (in practice, the command should be on one line):
java -cp OCEP_HOME_DIR/modules/com.bea.core.ws.glassfish.jaxws.tools_9.0.0.0.jar
com.sun.tools.ws.WsImport EchoService.WSDL
Where ORACLE_CEP_HOME
refers to the directory in which you installed Oracle Event Processing (such as /oracle_home
).
Archive the generated .class
files within the Oracle Event Processing application JAR file.
For more information, see Section 5.7, "Managing Libraries and Other Non-Class Files in Oracle Event Processing Projects".
Export the Web-Services Java packages for the client-code in the MANIFEST.MF
file using the Export-Package
header:
Export-Package: com.oracle.ocep.sample.echoService;
For more information, see Section 5.7.4, "How to Export a Package".
Import the following packages to the Oracle Event Processing application in the MANIFEST.MF
file using the Import-Package
header:
Import-Package: com.ctc.wstx.stax, com.sun.xml.bind.v2, com.sun.xml.messaging.saaj.soap, com.sun.xml.messaging.saaj.soap.ver1_1, com.sun.xml.ws, javax.jws, javax.xml.bind, javax.xml.bind.annotation, javax.xml.namespace, javax.xml.soap, javax.xml.transform, javax.xml.transform.stream, javax.xml.ws, javax.xml.ws.spi, org.xml.sax, weblogic.xml.stax;
For more information, see Section 5.7, "Managing Libraries and Other Non-Class Files in Oracle Event Processing Projects".
Use the client-code to invoke the Web Service as in any other Java application:
EchoService service = new EchoService(); EchoPort port = service.getEchoServicePort(); String echo = port.echo("foo");
This procedure describes how to expose an Oracle Event Processing application as a Web Service. In this scenario, the Oracle Event Processing application is the Web Service provider.
To expose an Oracle Event Processing application as a Web service:
Create or obtain the WSDL for the Web Service.
In this example, assume the use of a WSDL named EchoService.WSDL
.
Implement the service.
Consider using java.jws
annotations @WebService
and @WebMethod
.
Add a bea-jaxws.xml
file to your application bundle as Example 14-1 shows. Table 14-1 describes the attributes in this file.
Example 14-1 bea-jaxws.xml File
<endpoints> <endpoint> <name>EchoService</name> <implementation-class> com.bea.wlevs.test.echo.impl.EchoServiceImpl </implementation-class> <url-pattern>/echo</url-pattern> <wsdl-location> /META-INF/wsdl/echo.wsdl </wsdl-location> <service-name> {http://wsdl.oracle.com/examples/cep/echo}EchoService </service-name> <port-name> {http://wsdl.oracle.com/examples/cep/echo}EchoServicePort </port-name> </endpoint> </endpoints>
Table 14-1 bea-jaxws.xml File Attributes
Attribute | Description |
---|---|
|
The name of the web service. |
|
The class that implements the service. |
|
The url pattern to access the web service. |
|
Relative path to the wsdl in the bundle. |
|
QName of the service. |
|
QName of the port. |
For more information, see Section 5.7, "Managing Libraries and Other Non-Class Files in Oracle Event Processing Projects".
Reference the bea-jaxws.xml
file in the MANIFEST.MF
file using the BEA-JAXWS-Descriptor
header:
BEA-JAXWS-Descriptor: META-INF/bea-jaxws.xml;
For more information, see Section 5.7, "Managing Libraries and Other Non-Class Files in Oracle Event Processing Projects".
Import the following packages to the Oracle Event Processing application in the MANIFEST.MF
file using the Import-Package
header:
Import-Package: com.ctc.wstx.stax, com.sun.xml.bind.v2, com.sun.xml.messaging.saaj.soap, com.sun.xml.ws, javax.jws, javax.xml.bind, javax.xml.bind.annotation, javax.xml.namespace, javax.xml.soap, javax.xml.transform, javax.xml.transform.stream, javax.xml.ws, javax.xml.ws.spi, org.xml.sax, weblogic.xml.stax;
For more information, see Section 5.7, "Managing Libraries and Other Non-Class Files in Oracle Event Processing Projects".
Add a glassfish-ws
element to the Oracle Event Processing server DOMAIN_DIR
/config/config.xml
file that describes your Oracle Event Processing domain, where DOMAIN_DIR
refers to your domain directory:
<glassfish-ws> <name>JAXWS</name> <http-service-name>JettyServer</http-service-name> </glassfish-ws>