Acknowledgments | p. xv |
Introduction | p. xvii |
J2EE Interoperability Inside and Out | |
Interoperability in the Enterprise | p. 3 |
Introduction to Distributed Application Development | p. 4 |
Microsoft .NET and Java's Web Services Share a Similar Architecture | p. 6 |
Interoperability in the Enterprise | p. 7 |
J2EE Servlets, Java Server Pages, and Web Services | p. 8 |
Enterprise JavaBeans, Interfaces, and JDBC Persistence | p. 8 |
RMI-IIOP, the JNDI, and Deployment Descriptors | p. 8 |
.NET Language Integration Components | p. 9 |
Common Language Runtime Tasks | p. 9 |
CTS Supports Data Type Interoperability | p. 9 |
The Common Language Specification | p. 10 |
ASP.NET Architecture | p. 10 |
ASP.NET Preserves Application State Between Calls | p. 12 |
ASP.NET and Web Services | p. 13 |
Interoperability Solutions from Third-Party Vendors | p. 15 |
Approaches to Java--Microsoft .NET Interoperability | p. 16 |
Compiling Java Code to .NET Code | p. 17 |
Best Practices, Design Patterns, Security, and Business Solutions | p. 19 |
Java Connector Architecture (JCA) Specification | p. 19 |
What Is Enterprise Application Integration? | p. 20 |
What Is an Enterprise Information System? | p. 21 |
EIS Approaches Vary | p. 21 |
Case Study: International Finance Corporation Exchange (IFCE) | p. 23 |
Product Perspective | p. 24 |
General Information | p. 25 |
J2EE Servlets, Java Server Pages, and Web Services | p. 27 |
The J2EE Specification | p. 29 |
The Communication Technologies | p. 31 |
The Presentation Technologies | p. 32 |
The Business Application Technologies | p. 33 |
Developing a J2EE Application | p. 35 |
Web-Based Remote Presentation Model | p. 36 |
Distributed Logic Application Model | p. 37 |
Remote Data Management Model | p. 42 |
Distributed Data Management Model | p. 42 |
The MVC Business Development Model | p. 42 |
VC Layering | p. 43 |
Servlet Design | p. 45 |
HTTP and Servlets | p. 45 |
The Servlet Life Cycle | p. 47 |
A Small Servlet | p. 48 |
Servlet Interfaces and Classes | p. 49 |
Managing Session State with Servlets | p. 53 |
Java Server Pages | p. 55 |
The JSP Life Cycle | p. 55 |
JSP Specialized Tags | p. 57 |
JSP Page Directives | p. 59 |
Best Practices for JSP Page Processing | p. 61 |
Enterprise JavaBeans, Interfaces, and JDBC Persistence | p. 63 |
Overview of Enterprise JavaBeans | p. 64 |
Session Beans | p. 65 |
Entity Beans | p. 66 |
EJB Interfaces | p. 67 |
Remote Home Interface | p. 67 |
Remote Component Interface | p. 68 |
Local Component Interfaces | p. 69 |
Exploring Implementation Classes | p. 69 |
Container Responsibilities | p. 69 |
EJBs from a Client's Perspective | p. 71 |
What Are Remote Objects? | p. 72 |
Local and Remote Client View | p. 72 |
Remote and Local Interfaces and Their APIs | p. 73 |
Examining the Local Interface | p. 73 |
Developing Stateful Session Beans | p. 73 |
Examining How EJB Systems Function | p. 75 |
Constructing a Session Bean | p. 75 |
Developing a Stateful Session Bean | p. 84 |
Developing Entity Beans | p. 85 |
Entity Bean Characteristics | p. 85 |
Entity Bean Types | p. 86 |
Creating a CMP Entity Bean | p. 87 |
Developing a BMP Bean | p. 89 |
Considering Message-Driven Beans | p. 96 |
RMI-IIOP, the JNDI, and Deployment Descriptors | p. 101 |
Understanding Remote Object Access | p. 102 |
Investigating the Interfaces | p. 103 |
Object Serialization | p. 106 |
RMI-IIOP and the Java Naming and Directory Interface | p. 107 |
Examining the JNDI Infrastructure | p. 107 |
Retrieving Attributes | p. 109 |
Using Binding in Your Directory Service | p. 110 |
Understanding Deployment Descriptors | p. 112 |
Examining the Deployment Descriptor | p. 114 |
Microsoft .NET Internal Interoperability | |
.NET Language Integration Components | p. 121 |
Defining Key .NET Objectives | p. 122 |
.NET's Role in the Windows Family | p. 123 |
Examining the .NET Framework | p. 126 |
Defining the Common Language Runtime (CLR) | p. 126 |
What Is Reflection? | p. 129 |
The System.Type Namespace | p. 130 |
Creating a Class Library | p. 130 |
Reading Metadata | p. 132 |
Understanding and Building Dynamic Assemblies | p. 135 |
Understanding the Common Type Specification (CTS) | p. 140 |
.NET Modules | p. 143 |
Examining the Common Language Specification (CLS) | p. 143 |
Creating a Strong Name | p. 145 |
How Does .NET Locate an Assembly? | p. 146 |
ASP.NET Architecture | p. 149 |
ASP.NET Namespaces | p. 151 |
System.Web.UI Namespace | p. 151 |
ASP.NET Page Class | p. 156 |
Examining the Page Class | p. 156 |
An ASP.NET Page's Life Cycle | p. 157 |
Applying Page Directives | p. 159 |
Code-Behind Feature | p. 161 |
Defining Web Form Functionality | p. 163 |
Creating a Web Form | p. 166 |
Creating User Controls | p. 167 |
Adding a User Control Declaratively | p. 168 |
Adding a User Control Programmatically | p. 169 |
Server Control Types | p. 170 |
Web Controls | p. 170 |
Handling Events in the Server Control | p. 171 |
Error Handling and Security | p. 172 |
ASP.NET and Web Services | p. 175 |
What Is a Web Service? | p. 177 |
Creating a Web Service | p. 177 |
Defining a Service-Oriented Architecture (SOA) | p. 179 |
Primary Web Services Technologies | p. 182 |
Simple Object Access Protocol | p. 182 |
Web Services Description Language | p. 189 |
Implementing Interfaces | p. 199 |
Dynamic Binding | p. 199 |
Class Inheritance vs. Interface Inheritance | p. 200 |
Cross-Platform Interoperability | |
Interoperability Solutions from Third-Party Vendors | p. 203 |
Writing and Deploying Applications for Any Platform | p. 204 |
Ja.NET and J-Integra | p. 205 |
JNBridgePro: Infrastructure and Features | p. 206 |
The JNBridgePro Infrastructure | p. 207 |
JNBridgePro Features | p. 208 |
Overview of Installation | p. 211 |
Architectural Elements | p. 212 |
Configuring the .NET-Side | p. 212 |
Configuring the Java-Side | p. 213 |
About Communications Protocols | p. 213 |
Executing the Installer | p. 215 |
Configuring the Communications Protocol | p. 215 |
Improving Network Performance | p. 217 |
Starting Java for Proxy Generation | p. 217 |
Configuring the System for Proxy Use | p. 218 |
Configuring Proxies for Use with ASP.NET | p. 219 |
Starting a Standalone JVM for Proxy Use | p. 219 |
Running the Java-Side Under Nondefault Security Managers | p. 220 |
A Working Example: JNBridgePro and WebSphere 5.0 | p. 220 |
Creating jnbcore.war | p. 221 |
Building the Proxy DLL | p. 221 |
Building and Running the Client Application | p. 222 |
The BasicCalculatorEJB Sample Files | p. 223 |
Best Practices, Design Patterns, Security, and Business Solutions | p. 235 |
Applying Best Practices | p. 236 |
Examining the Container's Role | p. 236 |
Best Practice: Separating Business Logic from Presentation in J2EE Applications and .NET | p. 238 |
Best Practice: Use ASP.NET's Code-Behind Feature | p. 238 |
Best Practice: Maximize Benefits from Both Thin-Client and Rich-Client Applications Where Applicable | p. 239 |
User Input Validation | p. 239 |
Preventing Duplicate Client Requests | p. 239 |
Limiting a User's Input Choices | p. 240 |
Managing Session State in a Distributed Environment | p. 241 |
Best Practices: Client-Side Session State | p. 241 |
Best Practice: Using Hidden Fields | p. 242 |
Best Practice: Rewriting URLs | p. 243 |
Best Practice: Using Cookies | p. 243 |
Preserving Server-Side State in J2EE and .NET | p. 243 |
Best Practice: Using the HttpSession Interface in J2EE | p. 244 |
Defining Application State in .NET | p. 244 |
Best Practice: Using the HttpApplicationState Class | p. 244 |
Best Practice: Synchronizing Access to Application State | p. 245 |
Using Session State in ASP.NET | p. 245 |
Best Practice: Using ASP.NET Session State | p. 246 |
Best Practice: Enabling Session State | p. 246 |
Configuring Session State Storage | p. 247 |
Best Practice: Storing Session State In-Process and Out-of-Process | p. 247 |
Preserving State in SQL Server | p. 248 |
Cookieless Sessions | p. 248 |
Using Client-Side Cookies for Storing State | p. 249 |
Using Persistent Cookies to Store State | p. 249 |
Persistence on the Enterprise JavaBeans Tier | p. 250 |
Designing a Maximized Data Exchange | p. 250 |
Inheritance in J2EE and .NET | p. 250 |
Securing an Enterprise Application | p. 251 |
Applying ASP.NET Code Access Security | p. 252 |
Using a Trusted Connection in SQL Server | p. 252 |
Best Practice: Applying Security Measures | p. 253 |
Providing an IFCE Business Solution in Visual Basic .NET | p. 253 |
Appendixes | |
Java Connector Architecture (JCA) Specification | p. 265 |
Components of the JCA | p. 266 |
Connection Management Contracts | p. 266 |
Transaction Management Contract | p. 267 |
Security Contract | p. 267 |
Exploring the Common Client Interface | p. 268 |
Understanding the Role of a Resource Adapter | p. 268 |
Data Mapping | p. 269 |
Understanding the Message Broker | p. 269 |
Constructing an Integration Workflow Plan | p. 269 |
For More Information | p. 271 |
Additional Resources | p. 273 |
Index | p. 277 |
Table of Contents provided by Ingram. All Rights Reserved. |