Presentation is loading. Please wait.

Presentation is loading. Please wait.

Web Services in WebLogic Server

Similar presentations


Presentation on theme: "Web Services in WebLogic Server"— Presentation transcript:

1 Web Services in WebLogic Server
Aaron Mulder Chief Technical Officer Chariot Solutions LLC

2 Learning Objectives In this presentation, we'll discuss
The advantages of web services Exposing EJBs as web services in WebLogic 6.1 and WebLogic 7.0 Invoking web services from applications running in WebLogic 6.1/7.0

3 About Aaron Mulder Chief Technical Officer of Chariot Solutions
Published author (Professional EJB, and a forthcoming WebLogic 7 handbook) Presented at JavaOne 2001/2002, and the Philadelphia Java Users Group Member of the JSR-88 Expert Group (J2EE Application Deployment) Contributed to open-source projects such as JBoss, OpenEJB, and PostgreSQL

4 Presentation Agenda About web services
WebLogic support for web services WebLogic 6.1 in detail WebLogic 7.0 in detail Conclusions, Q&A

5 Why Web Services? Interoperability Alternatives hardware platforms
programming languages applications business partners Alternatives CORBA RMI Proprietary protocols (XML, binary, etc.)

6 What Are Web Services? Generic protocol, transport
For today's discussion SOAP 1.1 WSDL 1.1 HTTP or HTTPS JAX-RPC Registry services UDDI 2.0

7 What Does WebLogic Support?
First release with web services support Tools to generate web services servlet/JSP code for stateless session EJBs and JMS destinations Crippled tool to generate client code to invoke web services No standards-based support

8 What Does WebLogic Support?
Improved web services support Deployment Descriptor-based web services support Tool to generate client code to invoke any web service (based on WSDL) JAX-RPC support WebLogic 8.0 ? J2EE 1.4/EJB 2.1 web services support

9 Overview of Examples For the rest of the presentation, we'll dig into the code and procedures Source code is included on CD There are no particular WebLogic Console configuration requirements We'll focus on EJB access, as that is what J2EE 1.4 standardizes Inportant: WebLogic client libraries can be freely redistributed

10 WL6.1: Overview Expose stateless session beans via web services
Some limitations on EJB interface Can't expose selected methods The easy tool doesn't support security, or apps larger than a single EJB JAR The advanced procedure can't generate client code Examples use WebLogic 6.1 SP3

11 WL6.1: Architecture WAR EJB JARs SOAP Servlets Session Beans Client
Error Servlet WSDL JSPs

12 WL6.1: Developing the EJB No method overloading
Limited data types in parameters, return value boolean short int long float double Boolean Short Integer Long Float Double String BigDecimal Date Element Document DocumentFragment byte[] 1-D array of these JavaBean with these types of properties

13 WL6.1: Easy Packaging Tool
Create EJB JAR like usual Run setEnv script in weblogic/config/domain Use wsgen Ant task to create web services WAR and an EAR with the EJB JAR and WAR Deploy the EAR like usual

14 WL6.1: wsgen Ant script <wsgen destpath="example-wsgen.ear"
context="/examples" protocol="http"> <rpcservices path="myejb.jar"> <rpcservice bean="Bean1" uri="/web-services/bean1" /> </rpcservice> </wsgen> Configuration Parameters: EAR name Web application context Protocol (http/https) Source EJB JAR ejb-name from EJB JAR EJB sub-context

15 WL6.1: Advanced Packaging
Advantages Security settings Multiple EJB JARs, existing WAR/EAR Custom layout, URLs Procedure Configure servlets & EJB refs in WAR Generate WSDL JSPs Add WAR, EJB JARs to EAR Use easy packaging to generate client

16 WL6.1: Configure the WAR Add an invocation servlet for each EJB
weblogic.soap.server.servlet.StatelessBeanAdapter One <init-param> called ejb-ref whose value is the JNDI name of the EJB Ref Add one error servlet in each WAR weblogic.soap.server.servlet.FaultHandler Add servlet mappings for each servlet Add an <error-page> Exception class weblogic.soap.FaultException Location matches error servlet mapping

17 WL6.1: Configure the WAR, cont.
Add an EJB Reference for each EJB ejb-ref name must match the argument to the invocation servlet Add security-constraint, login-config, etc. to secure the web service Will use WebLogic security realm like any other web application Can separately secure the EJBs, but an insecure servlet can't invoke a secure EJB

18 WL6.1: DD Examples Too much to show here; provided on CD
Typically web.xml with all the settings described here, and weblogic.xml with EJB reference resolution Can integrate these settings into existing deployment descriptors for existing WAR

19 WL6.1: Generate WSDL JSPs Run the setEnv script
Add EJB JAR to the CLASSPATH Run the Remote2WSDL tool java weblogic.soap.wsdl.Remote2WSDL -protocol http com.chariotsolutions.example.Bean1 examples/web-services/bean1 > src/web/bean1-wsdl.jsp Remote2WSDL Arguments Protocol (http/https) fully-qualified remote interface name context & URL to servlet, without leading / redirect output to a file check for extraneous “type-class-name” line

20 WL6.1: WSDL JSP Aliasing Can add servlet and servlet mapping to web.xml for WDSL JSPs <servlet> <servlet-name>Bean1WSDL</servlet-name> <jsp-file>/bean1-wsdl.jsp</jsp-file> </servlet> <servlet-mapping> <url-pattern>/web-services/bean1.wsdl</url-pattern> </servlet-mapping>

21 WL6.1: Configuring the EAR
Add web services WAR and EJB JAR to application configuration <application> <display-name>Example of Web Services</display-name> <module> <ejb>example-ejbs.jar</ejb> </module> <web> <web-uri>example-web-services.war</web-uri> <context-root>/examples</context-root> </web> </application>

22 WL6.1: Generate Client Code
Only way to generate client code is to use wsgen Ant task, and it only generates clients for web services running in WebLogic Can use a third-party tool such as Apache SOAP or IBM Web Services Toolkit

23 WL6.1: Invoking the Web Services
Build a URL from the web app context root and servlet url-pattern For the examples provided: Be sure to configure a security realm or comment out the security settings in web.xml

24 WebLogic 7.0 Web Services More options for what backs the web services (individual EJB methods, etc.) Supports additional data types Can interact with SOAP messages Client need not receive a response Generates JAX-RPC clients from WSDL Quick-start tool from WSDL Uses web services DD Examples use WebLogic 7.0 SP1

25 WL7.0: Architecture WAR EJB JAR SOAP Handler Chain Client
web-services.xml Session Beans ? SOAP Handler Chain

26 WL7.0: Developing the EJB Still can't expose overloaded methods
Generally same basic data types as WebLogic 6.1, but can generate or code custom XML serializers for unknown data types (such as Java Beans) Additional built-in types include: byte/Byte, char/Character, BigInteger, Calendar

27 WL7.0: Easy Packaging Tool
Create an EJB JAR like normal Run the setEnv script to set environment, add webserviceclient.jar to CLASSPATH Run an Ant script with servicegen to create an EAR from an EJB JAR Deploy the EAR servicegen has loads of options, but still doesn't integrate well into an existing application

28 WL7.0: servicegen Ant Script
<servicegen destEar="example-servicegen.ear" contextURI="examples" > <service ejbJar="example-ejbs.jar" targetNamespace="java:mypackage.name" serviceName="Bean1" includeEJBs="Bean1" serviceURI="/web-services/bean1" generateTypes="True" expandMethods="True" style="rpc" > <client packageName="com.chariotsolutions.example"/> </service> </servicegen>

29 WL7.0: Advanced Packaging
Procedure Develop and package the EJBs Create the web-services.xml deployment descriptor Package the WAR, including web.xml for security, and classes for SOAP handlers Package the EAR, including EJB JARs and WAR Build the client code

30 WL7.0: web-services.xml <web-services>
<web-service name="Bean1" targetNamespace="java:mypackage.name" uri="/web-services/bean1"> <components> <stateless-ejb name="Bean1"> <ejb-link path="example-ejbs.jar#Bean1" /> </stateless-ejb> </components> <operations> <operation method="saySomething" component="Bean1" /> </operations> </web-service> </web-services>

31 WL7.0: More web-services.xml
Use embedded XML schemas with namespaces to identify custom data types (see also the autotype Ant task) Use method parameters to support in/out parameters Use method of “ * ” to support all methods on an EJB Specify one-way operations Specify SOAP processors

32 WL7.0: Package WAR & EAR web-services.xml goes in WEB-INF/ in the WAR
SOAP handler classes go in WEB-INF/lib or WEB-INF/classes Security, WSDL URL aliasing goes in web.xml No need for EJB refs in web.xml EAR needs references to WAR and EJB JARs like before

33 WL7.0: Deploy EAR Deploy the EAR like normal
Web services appear in the Console under Deployments/Web Services Components Use these URLs to access the web services and WSDL:

34 WL7.0: Client Code Run setEnv script, add webserviceclient.jar
Generate client code from the WSDL using the clientgen Ant task <clientgen wsdl="c:/examples/src/web/bean1.wsdl" serviceName="Bean1" packageName="com.chariotsolutions.example.client" clientJar="c:/examples/dist/bean1-client.jar" /> Can also specify a normal URL for the WSDL

35 WL7.0: Coding a Client Add webserviceclient.jar and client JAR to CLASSPATH Configure JAXM/JAX-RPC system properties Use the generated classes to invoke the Web Service Or, use a much more complicated process to dynamically interact with arbitrary web services based on WSDL

36 WL7.0: Client Code System.setProperty("javax.xml.soap.MessageFactory", "weblogic.webservice.core.soap.MessageFactoryImpl"); System.setProperty("javax.xml.rpc.ServiceFactory", "weblogic.webservice.core.rpc.ServiceFactoryImpl"); ... Bean1_Impl stub = new Bean1_Impl(); Bean1Port bean = stub.getBean1Port(username, password); String response = bean.saySomething(); System.out.println("Bean1 said: "+response); This client will work against the service deployed in WebLogic 6.1 or 7.0!

37 Conclusions WebLogic 6.1 provides basic web services, but limited client generation WebLogic 7.0 provides lots of options, but taking full advantage makes it extremely difficult to configure WebLogic 7.0 is nearly fully Ant-script- able from client to server (WSDL?) EJB 2.1 will be greatly appreciated when it arrives

38 How can web services ease integration challenges today?
A Final Thought How can web services ease integration challenges today?

39 Questions?

40


Download ppt "Web Services in WebLogic Server"

Similar presentations


Ads by Google