Contents at a Glance - Amazon Web Services...ORACLE FLUFF Java EE Applications on the Oracle Java...

6
v Contents at a Glance 1 Java EE and Cloud Computing 1 2 The Oracle Java Cloud 25 3 Build and Deploy with NetBeans 49 4 Servlets, Filters, and Listeners 65 5 JavaServer Pages, JSTL, and Expression Language 97 6 JavaServer Faces 127 7 Enterprise JavaBeans (Session Beans) 151 8 Web Services 179 9 Persistence Using the Oracle Database Cloud Service 203 A Java EE Technologies and JSRs 233 B Application Servers Compatible with Java EE 5, 6, and 7 243 C Supported and Unsupported Technologies, Services, and APIs 247 Index 253

Transcript of Contents at a Glance - Amazon Web Services...ORACLE FLUFF Java EE Applications on the Oracle Java...

ORACLE FLUFF / Java EE Applications on the Oracle Java Cloud / Oak / 715-8 / FM

v

Contents at a Glance

1 Java EE and Cloud Computing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

2 The Oracle Java Cloud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

3 Build and Deploy with NetBeans . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

4 Servlets, Filters, and Listeners . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

5 JavaServer Pages, JSTL, and Expression Language . . . . . . . . . . . . . . . 97

6 JavaServer Faces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127

7 Enterprise JavaBeans (Session Beans) . . . . . . . . . . . . . . . . . . . . . . . . 151

8 Web Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179

9 Persistence Using the Oracle Database Cloud Service . . . . . . . . . . . 203

A Java EE Technologies and JSRs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233

B Application Servers Compatible with Java EE 5, 6, and 7 . . . . . . . . . 243

C Supported and Unsupported Technologies, Services, and APIs . . . . 247

Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253

00-FM.indd 5 24/07/14 11:57 am

ORACLE FLUFF / Java EE Applications on the Oracle Java Cloud / Oak / 715-8 / FM

vii

Contents

Foreword . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiiiAcknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xviiIntroduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix

1 Java EE and Cloud Computing . . . . . . . . . . . . . . . . . . . . . . . . . . 1Java Editions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2Java EE Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3Application Servers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

Open Source vs. Commercial . . . . . . . . . . . . . . . . . . . . . . 4Reference Implementation . . . . . . . . . . . . . . . . . . . . . . . . 6

API and Technology Specification . . . . . . . . . . . . . . . . . . . . . . . . 7Java Community Process (JCP) and Java EE . . . . . . . . . . . . 8Java EE Compatible . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

Profiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10Web Profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

Cloud Computing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11Going Around in Circles . . . . . . . . . . . . . . . . . . . . . . . . . . 11What Is Cloud Computing? . . . . . . . . . . . . . . . . . . . . . . . . 12Why Cloud Computing? . . . . . . . . . . . . . . . . . . . . . . . . . . 14Concerns About Cloud Computing . . . . . . . . . . . . . . . . . . 15Private, Public, and Hybrid Clouds . . . . . . . . . . . . . . . . . . 16Cloud as a Leveler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

Java EE on the Cloud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16Competing Technologies: Alternatives

to Java on the Cloud . . . . . . . . . . . . . . . . . . . . . . . . . 17

00-FM.indd 7 24/07/14 11:57 am

viii Java EE Applications on Oracle Java Cloud

ORACLE FLUFF / Java EE Applications on the Oracle Java Cloud / Oak / 715-8 / FM

Standards and Java EE 7 . . . . . . . . . . . . . . . . . . . . . . . . . . 19Java EE Vendors and Alternatives . . . . . . . . . . . . . . . . . . . . 19

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

2 The Oracle Java Cloud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25Oracle’s Cloud Foray . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26Oracle Cloud Constituents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

SaaS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27IaaS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27PaaS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

Java Cloud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28Pricing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28Trial Signup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32My Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

IDE Integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35Oracle Java Cloud Service SDK . . . . . . . . . . . . . . . . . . . . . 36

Users and Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

3 Build and Deploy with NetBeans . . . . . . . . . . . . . . . . . . . . . . . . 49Development IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

Why NetBeans? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50Building with Java EE Technologies . . . . . . . . . . . . . . . . . . . . . . . 51First NetBeans Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51What Happened? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

Files and Directories Generated . . . . . . . . . . . . . . . . . . . . 58The Cloud Deployment . . . . . . . . . . . . . . . . . . . . . . . . . . . 59Clean and Build, Verify . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

Web Application Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60Directories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

Packaging the Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62We Are at WAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

4 Servlets, Filters, and Listeners . . . . . . . . . . . . . . . . . . . . . . . . . . 65Servlets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

Servlet Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67HttpServlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67Servlet One . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68Servlet Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

00-FM.indd 8 24/07/14 11:57 am

ORACLE FLUFF / Java EE Applications on the Oracle Java Cloud / Oak / 715-8 / FM

Contents ix

HttpServletRequest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73HttpServletResponse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73web.xml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73weblogic.xml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

Sharing Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75Session Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

HttpSession . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79RequestDispatcher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

WebLogic-Specific Servlet Capabilities on OJC . . . . . . . . . 82Filters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83Listeners . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86View Java Logs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

5 JavaServer Pages, JSTL, and Expression Language . . . . . . . . . . . . 97The Origin of JSP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98JSP on the Oracle Java Cloud . . . . . . . . . . . . . . . . . . . . . . . . . . . 99JSP Internals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100

JSP Lifecycle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100Servlet Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101JSP Directives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105JSP Declaration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107JSP Scriptlets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107JSP Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108Implicit Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109JSP Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110

Tags and Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111Custom Tags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112Expression Language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113JSTL Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114Using Tags in a JSP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126

6 JavaServer Faces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127From JSP to Struts to JSF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128JSF on the Oracle Java Cloud . . . . . . . . . . . . . . . . . . . . . . . . . . . 129Facelets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129JSF Managed Beans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134Validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142Ajax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145

00-FM.indd 9 24/07/14 11:57 am

x Java EE Applications on Oracle Java Cloud

ORACLE FLUFF / Java EE Applications on the Oracle Java Cloud / Oak / 715-8 / FM

Templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150

7 Enterprise JavaBeans (Session Beans) . . . . . . . . . . . . . . . . . . . . . 151Containers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152EJB in OJC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153Why EJB? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153Session Beans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154

Stateless . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155Stateful . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155

Interfaces: Local or Remote . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155Developing an Enterprise Application with EJBs . . . . . . . . . . . . . 157

New Session Bean . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159Inject the Session Bean into the Servlet . . . . . . . . . . . . . . . 163Package and Run from NetBeans . . . . . . . . . . . . . . . . . . . . 164Deploy Using the Java Cloud Services Control . . . . . . . . . 164

Lifecycle of a Session Bean . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169Transaction Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171

Rollback and Exception Handling . . . . . . . . . . . . . . . . . . . 176Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177

8 Web Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179Developing a SOAP Web Service . . . . . . . . . . . . . . . . . . . . . . . . 181

WSDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186Web Service Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187

RESTful Web Services Using JAX-RS API . . . . . . . . . . . . . . . . . . . 194Building RESTful Web Services on the OJC . . . . . . . . . . . . 195JAX-RS 1.1 Fix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196Modify the REST Resource . . . . . . . . . . . . . . . . . . . . . . . . 197RESTful Web Service Client . . . . . . . . . . . . . . . . . . . . . . . . 199

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202

9 Persistence Using the Oracle Database Cloud Service . . . . . . . . 203Persistence on the Oracle Cloud . . . . . . . . . . . . . . . . . . . . . . . . . 204Oracle Database Cloud Service . . . . . . . . . . . . . . . . . . . . . . . . . 204

Explore Database Cloud . . . . . . . . . . . . . . . . . . . . . . . . . . 205Oracle Apex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210Java Cloud: Database Cloud Integration . . . . . . . . . . . . . . 211

JPA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212Persistence Providers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213Entity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213

00-FM.indd 10 24/07/14 11:57 am

ORACLE FLUFF / Java EE Applications on the Oracle Java Cloud / Oak / 715-8 / FM

Contents xi

Developing an Entity Application . . . . . . . . . . . . . . . . . . . 214Add Entity from a Servlet . . . . . . . . . . . . . . . . . . . . . . . . . . 219Find and Update Entity . . . . . . . . . . . . . . . . . . . . . . . . . . . 222Java Persistence Query Language . . . . . . . . . . . . . . . . . . . 223CRUD JSF for Entity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229

Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232

A Java EE Technologies and JSRs . . . . . . . . . . . . . . . . . . . . . . . . . . 233Java Platform, Enterprise Edition 5 (Java EE 5) JSR 244 . . . . . . . . . 234Java Platform, Enterprise Edition 6 (Java EE 6) JSR 316 . . . . . . . . . 235

Java Platform, Enterprise Edition 6 (Java EE 6) Web Profile . . . . . . . . . . . . . . . . . . . . . . . 237

Java Platform, Enterprise Edition 7 (Java EE 7) JSR 342 . . . . . . . . . 238Java Platform, Enterprise Edition 7

(Java EE 7) Web Profile . . . . . . . . . . . . . . . . . . . . . . . 241

B Application Servers Compatible with Java EE 5, 6, and 7 . . . . . . 243Java EE 5–Compatible Implementations . . . . . . . . . . . . . . . . . . . 244Java EE 6 Full Platform–Compatible Implementations . . . . . . . . . 245

Java EE 6 Web Profile–Compatible Implementations . . . . . 245Java EE 7 Full Platform–Compatible Implementations . . . . . . . . . 246

Java EE 7 Web Profile–Compatible Implementations . . . . . 246

C Supported and Unsupported Technologies, Services, and APIs . . . 247Technologies and Services Supported . . . . . . . . . . . . . . . . . . . . 248

Java EE 5 and 6 Specifications Supported . . . . . . . . . . . . . 248Public WebLogic Server 10.3.6

APIs and Capabilities Supported . . . . . . . . . . . . . . . . 249Unsupported Features and APIs . . . . . . . . . . . . . . . . . . . . . . . . . 250

Unsupported WebLogic Server 10.3.6 APIs and Capabilities . . . . . . . . . . . . . . . . . . . . . . . . 251

Whitelist Violations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252

Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253

00-FM.indd 11 24/07/14 11:57 am