Contents at a Glance - Amazon Web Services...ORACLE FLUFF Java EE Applications on the Oracle Java...
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