Links: Table of Contents | Single HTML | Single PDF

Metro User Guide


Table of Contents

Preface
1. Introduction to Metro
1.1. Required Software
1.2. What is WSIT?
1.2.1. Bootstrapping and Configuration
1.2.2. Message Optimization Technology
1.2.3. Reliable Messaging Technology
1.2.4. Security Technology
1.3. How Metro Relates to .NET Windows Communication Foundation (WCF)
1.4. Metro Specifications
1.4.1. Bootstrapping and Configuration Specifications
1.4.2. Message Optimization Specifications
1.4.3. Reliable Messaging Specifications
1.4.4. Security Specifications
1.5. How the Metro Technologies Work
1.5.1. How Message Optimization Works
1.5.2. How Reliable Messaging Works
1.5.3. How Security Works
2. Using Metro
2.1. Metro Tools
2.1.1. Useful tools for your toolbox
2.2. Using Mavenized Metro Binaries
2.2.1. Using Metro in a Maven project
2.2.2. Using Metro in a non-Maven project
2.3. Developing with NetBeans
2.3.1. Registering GlassFish with the IDE
2.3.2. Creating a Web Service
2.3.3. Configuring Metro's WSIT Features in the Web Service
2.3.4. Deploying and Testing a Web Service
2.3.5. Creating a Client to Consume a WSIT-Enabled Web Service
2.4. Developing with Eclipse
2.4.1. Setup
2.4.2. Create a Metro Web Services Endpoint
2.4.3. Creating Web Service Client using Wsimport CLI
2.4.4. Creating Web Service Client using Wsimport Ant Task
2.4.5. Creating Web Service Client using SOAP UI Plugin
2.5. Logging
2.5.1. Dynamic tube-based message logging
2.5.2. Dumping SOAP messages on client
2.5.3. Dumping SOAP messages on server
2.6. Using JAX-WS / Metro with Java SE
2.6.1. Using JAX-WS with Java SE
2.6.2. Using Metro with Java SE
2.7. Deploying Metro endpoint
2.7.1. The WAR Contents
2.7.2. Using sun-jaxws.xml
2.7.3. Using 109 Deployment Descriptor
2.7.4. Using Spring
2.8. Handlers and MessageContext
2.8.1. MessageContext in JAX-WS
2.8.2. Handlers in JAX-WS
2.8.3. Efficient Handlers in JAX-WS RI
2.9. Deploying Metro with ...
2.9.1. WebLogic 12
2.10. Developing client application with locally packaged WSDL
2.10.1. Service API to pass the WSDL information
2.10.2. Xml Catalog
2.10.3. Using -wsdlLocation switch
2.11. How to invoke and endpoint by overriding endpoint address in the WSDL
2.11.1. BindingProvider.ENDPOINT_ADDRESS_PROPERTY
2.11.2. Create Service using updated WSDL
2.12. Maintaining State in Web Services
2.13. FastInfoset
2.13.1. Using FastInfoset
2.14. High Availability Support in Metro
3. Compiling WSDL
3.1. Compiling multiple WSDLs that share a common schema
3.2. Dealing with schemas that are not referenced
3.3. Customizing XML Schema binding
3.3.1. How to get simple and better typed binding
3.4. Generating Javadocs from WSDL documentation
3.5. Passing Java Compiler options to Wsimport
4. SOAP
4.1. SOAP headers
4.1.1. Adding SOAP headers when sending requests
4.1.2. Accessing SOAP headers for incoming messages
4.1.3. Adding SOAP headers when sending replies
4.1.4. Mapping additional WSDL headers to method parameters
4.2. Schema Validation
4.2.1. Server Side Schema Validation
4.2.2. Client Side Schema Validation
5. HTTP
5.1. HTTP headers
5.1.1. Sending HTTP headers on request
5.1.2. Accessing HTTP headers of the response
5.2. HTTP compression
5.3. HTTP cookies
5.3.1. Enabling cookie support
5.3.2. Accessing HTTP cookies in the response
5.3.3. Accessing HTTP cookies on the server
5.4. HTTP client streaming support
5.5. Access HTTP headers in a Handler
5.5.1. From Client side handler
5.5.2. From Server side handler
5.6. HTTP Timeouts
5.7. HTTP Persistent Connections (keep-alive)
5.8. HTTPS HostnameVerifier
5.9. HTTPS SSLSocketFactory
5.10. HTTP address in soap:address and import locations
6. Processing Large Data
6.1. Receiving large SOAP requests
6.1.1. Provider<Message>
6.2. Binary Attachments (MTOM)
6.2.1. MTOM
6.2.2. Enabling MTOM on server
6.2.3. Enabling MTOM on client
6.2.4. MTOM threshold
6.2.5. .NET interoperability
6.3. Large Attachments
6.3.1. Client Side
6.3.2. Server Side
6.3.3. Configuration
6.3.4. Large Attachments Summary
7. Bootstrapping and Configuration
7.1. What is a Server-Side Endpoint?
7.2. Creating a Client from WSDL
7.3. Client From WSDL Examples
8. Message Optimization
8.1. Creating a MTOM Web Service
8.2. Configuring Message Optimization in a Web Service
8.3. Deploying and Testing a Web Service with Message Optimization Enabled
8.4. Creating a Client to Consume a Message Optimization-enabled Web Service
8.5. Message Optimization and Secure Conversation
9. SOAP/TCP Web Service transport
9.1. What is SOAP/TCP?
9.2. Creating a SOAP/TCP enabled Web Service
9.3. Configuring Web Service to be able to operate over SOAP/TCP transport
9.4. Deploying and Testing a Web Service with SOAP/TCP Transport Enabled
9.5. Creating a Client to Consume a SOAP/TCP-enabled Web Service
9.6. Configuring Web Service client to operate over SOAP/TCP transport
10. Using Reliable Messaging
10.1. Introduction to Reliable Messaging
10.2. Configuring Web Service Endpoint
10.3. Configuring Web Service Client
10.4. Configurable features summary
10.5. Creating Web Service Providers and Clients that use Reliable Messaging
10.6. Using Secure Conversation With Reliable Messaging
10.7. High Availability Support in Reliable Messaging
11. WS-MakeConnection support
11.1. Introduction to WS-MakeConnection
11.2. Configuring Web Service Endpoint
11.2.1. Configuration via an WS-Policy expression
11.2.2. Configuration via a Java annotation
11.3. Configuring Web Service Client
12. Using WSIT Security
12.1. Configuring Security Using NetBeans IDE
12.2. Summary of Configuration Requirements
12.2.1. Summary of Service-Side Configuration Requirements
12.2.2. Summary of Client-Side Configuration Requirements
12.3. Security Mechanisms
12.3.1. Username Authentication with Symmetric Key
12.3.2. Username Authentication with Password Derived Keys
12.3.3. Mutual Certificates Security
12.3.4. Symmetric Binding with Kerberos Tokens
12.3.5. Transport Security (SSL)
12.3.6. Message Authentication over SSL
12.3.7. SAML Authorization over SSL
12.3.8. Endorsing Certificate
12.3.9. SAML Sender Vouches with Certificates
12.3.10. SAML Holder of Key
12.3.11. STS Issued Token
12.3.12. STS Issued Token with Service Certificate
12.3.13. STS Issued Endorsing Token
12.4. Configuring SSL and Authorized Users
12.4.1. Configuring SSL For Your Applications
12.4.2. Adding Users to GlassFish
12.5. Configuring Keystores and Truststores
12.5.1. Specifying Aliases with the Updated Stores
12.5.2. Configuring the Keystore and Truststore
12.5.3. Configuring Validators
12.6. Configuring Kerberos for Glassfish and Tomcat
12.6.1. For Glassfish
12.6.2. For Tomcat
12.7. Securing Operations and Messages
12.7.1. Supporting Token Options
12.8. Configuring A Secure Token Service (STS)
12.9. Example Applications
12.9.1. Example: Username Authentication with Symmetric Key (UA)
12.9.2. Example: Username with Digest Passwords
12.9.3. Example: Mutual Certificates Security (MCS)
12.9.4. Example: Transport Security (SSL)
12.9.5. Example: SAML Authorization over SSL (SA)
12.9.6. Example: SAML Sender Vouches with Certificates (SV)
12.9.7. Example: STS Issued Token (STS)
12.9.8. Example: Broker Trust STS (BT)
12.9.9. Example: STS Issued Token With SecureConversation (STS+SC)
12.9.10. Example: Kerberos Token (Kerb)
13. WSIT Security Features: Advanced: Topics
13.1. Using Security Mechanisms
13.2. Understanding WSIT Configuration Files
13.2.1. Service-Side WSIT Configuration Files
13.2.2. Client-Side WSIT Configuration Files
13.3. Security Mechanism Configuration Options
13.4. Building custom STS
13.4.1. Handling Claims with Metro STS
13.5. Handling Token and Key Requirements at Run Time
13.6. Advanced Usages of STS in Security
13.6.1. Token Caching and Sharing
13.6.2. ActAs and Identity Delegation
14. WSIT Example Using a Web Container Without NetBeans IDE
14.1. Environment Configuration Settings
14.1.1. Setting the Web Container Listener Port
14.1.2. Setting the Web Container Home Directory
14.2. WSIT Configuration and WS-Policy Assertions
14.3. Creating a Web Service without NetBeans
14.3.1. Creating a Web Service From Java
14.3.2. Creating a Web Service From WSDL
14.4. Building and Deploying the Web Service
14.4.1. Building and Deploying a Web Service Created From Java
14.4.2. Building and Deploying a Web Service Created From WSDL
14.4.3. Deploying the Web Service to a Web Container
14.4.4. Verifying Deployment
14.5. Creating a Web Service Client
14.5.1. Creating a Client from Java
14.5.2. Creating a Client from WSDL
14.6. Building and Deploying a Client
14.7. Running a Web Service Client
14.8. Undeploying a Web Service
15. Accessing Metro Services Using WCF Clients
15.1. Creating a WCF Client
15.1.1. Prerequisites to Creating the WCF Client
15.1.2. Examining the Client Class
15.1.3. Building and Running the Client
16. Data Contracts
16.1. Web Service - Start from Java
16.1.1. Data Types
16.1.2. Fields and Properties
16.1.3. Java Classes
16.1.4. Open Content
16.1.5. Enum Type
16.1.6. Package-level Annotations
16.2. Web Service - Start from WSDL
16.3. Customizations for WCF Service WSDL
16.3.1. generateElementProperty Attribute
16.4. Developing a Microsoft .NET Client
16.5. BP 1.1 Conformance
17. Modular Databinding
17.1. Introduction
17.2. Configure databinding for JVM
17.3. Configure databinding for an endpoint
18. Using Atomic Transactions
18.1. Using Web Services Atomic Transactions
18.1.1. Overview of Web Services Atomic Transactions
18.1.2. Enabling Web Services Atomic Transactions on Web Service Endpoint
18.1.3. Enabling Web Services Atomic Transactions on Web Service Clients
18.1.4. System Level Configuration
18.1.5. Compatibility
18.2. About the basicWSTX Example
18.3. Building, Deploying and Running the basicWSTX Example
19. Managing Policies
19.1. Managing Policies
19.1.1. Introduction
19.1.2. Policy References
19.1.3. WSDL Import
19.1.4. External Policy References
20. Monitoring and Management
20.1. Introduction to Metro JMX Monitoring
20.2. Enabling and Disabling Monitoring
20.2.1. Enabling and disabling Metro monitoring via system properties
20.2.2. Enabling and disabling endpoint monitoring via policy
20.2.3. Enabling and disabling client monitoring via policy
20.3. Monitoring Identifiers
20.3.1. Endpoint Monitoring Identifiers
20.3.2. Client monitoring identifiers
20.3.3. Identifier Character Mapping
20.3.4. Resolving Monitoring Root Name Conflicts
20.4. Available Monitoring Information
20.4.1. WSClient Information
20.4.2. WSEndpoint Information
20.4.3. WSNonceManager Information
20.4.4. WSRMSCSessionManager Information
20.4.5. WSRMSequenceManager Information
20.5. Notes
21. Using Metro With Spring
21.1. Spring Introduction
21.2. Using Metro With Spring and NetBeans 6.1
21.2.1. Spring NetBeans 6.1 Introduction
21.2.2. Creating a Netbeans 6.1 Spring Project
21.2.3. Adding a Web Service
21.3. Using Metro With Spring and NetBeans 6.5
21.3.1. Spring NetBeans 6.5 Introduction
21.3.2. Creating a NetBeans 6.5 Spring Project
21.3.3. Adding a Web Service
21.4. Using WSIT Functionality With Spring
22. Further Information
22.1. Links to more information

List of Figures

1.1. Metro's WSIT Web Services Features
1.2. Bootstrapping and Configuration
1.3. Bootstrapping and Configuration Specifications
1.4. Message Optimization Specifications
1.5. Reliable Messaging Specifications
1.6. Web Services Security Specifications
1.7. Application Message Exchange Without Reliable Messaging
1.8. Application Message Exchange with Reliable Messaging Enabled
1.9. Security Policy Exchange
1.10. Trust and Secure Conversation
1.11. Secure Conversation
2.1. Editing Web Service Attributes
2.2. Reliable Messaging Configuration Window
2.3. SOAP UI - JAX-WS Artifacts
2.4. SOAP UI - Preferences
8.1. Enabling MTOM
9.1. Enabling SOAP/TCP
9.2. Enabling SOAP/TCP for a Web Service client
10.1. Quality of Service (NetBeans)
10.2. Quality of Service - Advanced (NetBeans)
10.3. Advanced Reliable Messaging Attributes (NetBeans)
12.1. Web Service Attributes Editor Page
12.2. Web Service References Attributes Editor Page for Web Service Clients
12.3. Quality of Service - Client - Security
12.4. Deployment Descriptor Page
12.5. Keystore Configuration Dialog
12.6. Web Service Attributes Editor Page: Operation Level
12.7. Web Service Attributes Editor Page: Message Parts
12.8. Kerberos Configuration Attributes - Service
12.9. Kerberos Configuration Attributes - Client
13.1. ActAs and Identity Delegation
18.1. Web Services Atomic Transactions Framework
18.2. Atomic Transaction - Interaction between two Servers
18.3. WS-Coordination and WS-AtomicTransaction Protocols in Two GlassFish Domains
18.4. Components in the basicWSTX Example
18.5. basicWSTX Results
20.1. Monitoring - One client and two services running inside the same instance of GlassFish
20.2. Monitoring - top-level information available for each client
20.3. Monitoring - WSEndpoint information
20.4. Monitoring - WSRMSequenceManager Information
21.1. Netbeans 6.1 - Creating a Web Application
21.2. Netbeans 6.1 - Creating a Web Application
21.3. Netbeans 6.1 - Creating a Web Application - Spring dependencies
21.4. Netbeans 6.1 - Creating a Web Application - Adding libraries
21.5. Netbeans 6.1 - Adding a Webservice
21.6. Netbeans 6.5 - Creating a Web Application
21.7. Netbeans 6.5 - Creating a Web Application
21.8. Netbeans 6.5 - Creating a Web Application - Servers and Settings
21.9. Netbeans 6.5 - Creating a Web Application - Spring dependencies
21.10. Netbeans 6.5 - Creating a Web Application - Adding libraries
21.11. Netbeans 6.5 - Adding a Web Service
21.12. Netbeans - Edit Web Service Attributes

List of Tables

1.1. Metro Specification Versions
2.1. Endpoint attributes
3.1. wsdl:documentation to Javadoc mapping
6.1. JAXB Mapping Rules
10.1. Reliable Messaging Configuration Options for Service Endpoint
10.2. Reliable Messaging Configuration Options for Service Client
10.3. Namespaces used within Metro Reliable Messaging WS-Policy Assertions
10.4. Reliable Messaging Configuration Features - Layout
10.5. Enable Reliable Messaging + version
10.6. Sequence Inactivity Timeout
10.7. Acknowledgement interval
10.8. Retransmission Interval
10.9. Retransmission Interval Adjustment Algorithm
10.10. Maximum Retransmission Count
10.11. Close sequence timeout
10.12. Acknowledgement request interval
10.13. Bind RM sequence to security token
10.14. Bind RM sequence to secured transport
10.15. Exactly once delivery
10.16. At Most once delivery
10.17. At Least once delivery
10.18. InOrder delivery
10.19. Flow Control
10.20. Maximum Flow Control Buffer Size
10.21. Maximum concurrent RM sessions
10.22. Reliable Messaging Persistence
10.23. Sequence manager maintenace task execution period
12.1. Summary of Service-Side Configuration Requirements
12.2. Summary of Client-Side Configuration Requirements
12.3. Keystore and Truststore Aliases
12.4. Keystore and Truststore Aliases for STS
13.1. Security Mechanism Configuration Options
16.1. CLR to XML Schema Type Mapping
18.1. Components of Web Services Atomic Transactions
18.2. Web Services Atomic Transactions Configuration Options
18.3. Flow Types Values
18.4. Web Services Atomic Transaction Policy Assertion Values (WS-AtomicTransaction 1.2)