<Insert Picture Here>
Application Server 10.1.3.1 CoreArne BrüningSenior Systemberater
Themes Driving Oracle Application Server 10g R3
• Great Developer Experience• Leadership with JSF, EJB 3.0, Web Services and Rules• Declarative, Standards Based Development
• Better Manageability and QoS• Deployment and Clustering• High Availability
• Hot Pluggability• Open Source Leverage, Integration, Contributions• Run Great With Third Party Middleware
<Insert Picture Here>
Great Developer ExperienceTools & Runtime
Oracle Containers for J2EE Fastest, Lightest J2EE Server
• J2EE 1.4 + more
• Standards Compliant
• Advanced Security
• Enterprise Messaging
• Web Services• WS-Security
• WS-Reliability
• Integrated Management
• Productive Development Tools
SupportJSP 2.0JSF 1.1Servlet 2.4EJB 2.1/3.0JAX-RPC 1.1JMS 1.1JMX 1.2JCA 1.5JTA 1.01bJACC 1.0JAXP 1.2JAAS 1.0
Business Logic and PresentationEJB 3.0 (JSR 220) and JSF (JSR 127)
Common Metadata Services
Declarative Development
ControllerView
JSF JSF or Struts
Device
Renderer
Model
EJB 3.0
Oracle and EJB 3.0
• Expert in persistence through TopLink • Co-Specification Lead for EJB 3.0• TopLink Essentials Contributed to Glassfish as EJB 3.0
Persistence RI• Lead Eclipse EJB 3.0 project • EJB 3.0 in JDeveloper and
Oracle Application Server
http://www.oracle.com/technology/ejb3
Details: EJB 3.0
EJB 2.1 Bean ClassEJB 2.1 Bean Classpublic interface Calculator extends EJBObject {
int add (int a, int b) throws RemoteException;int subtract (int a, int b) throws RemoteException;
}public interface CalculatorHome extends EJBHome {
Calculator create()throws CreateException,RemoteException;}public class CalculatorBean implements SessionBean {
private SessionContext ctx;public void setSessionContext(SessionContext s) {ctx = s;}public void ejbCreate() {}public void ejbActivate () {}public void ejbPassivate () {}public void ejbRemove () {}
public int add (int a, int b) {return a + b;}public int subtract (int a, int b) {return a – b;}
}
EJB 2.1 Bean ClassEJB 2.1 Bean Classpublic interface Calculator extends EJBObject {
int add (int a, int b) throws RemoteException;int subtract (int a, int b) throws RemoteException;
}public interface CalculatorHome extends EJBHome {
Calculator create()throws CreateException,RemoteException;}public class CalculatorBean implements SessionBean {
private SessionContext ctx;public void setSessionContext(SessionContext s) {ctx = s;}public void ejbCreate() {}public void ejbActivate () {}public void ejbPassivate () {}public void ejbRemove () {}
public int add (int a, int b) {return a + b;}public int subtract (int a, int b) {return a – b;}
}
EJB 3.0 Bean ClassEJB 3.0 Bean Class@Statelesspublic class CalculatorBean implements Calculator {
public int add (int a, int b) {return a + b;}public int subtract (int a, int b) {return a – b;}
}public interface Calculator {
int add (int a, int b);int subtract (int a, int b);
}
EJB 2.1 Deployment DescriptorEJB 2.1 Deployment Descriptor<session>
<ejb-name>CalculatorEJB</ejb-name><home>com.example.CalculatorHome</home><remote>com.example.Calculator</remote><ejb-class>com.example.CalculatorBean</ejb-class><session-type>Stateless</session-type><transaction-type>Container</transaction-type>
</session>...
EJB 3.0 Deployment DescriptorEJB 3.0 Deployment Descriptor
EJB 3.0 Provides a Significant Reduction in Complexity
670
326
651
440
100200300400500600700800
EJB 2.1 EJB 3.0
Lines of CodeLines of XML
652
16
0
5
10
15
20
EJB 2.1 EJB 3.0
ClassesDescriptors
Oracle EJB 3.0 Runtime Open Sourced in Project GlassfishEJB 3.0 Design Time in JDeveloper
Oracle Leads Eclipse EJB 3.0 Persistence Design Time
Oracle and JavaServer Faces
• Key contributor to JSF Expert Group• Contribute components to Apache MyFaces• Lead Eclipse JSF project • JSF in JDeveloper and
Oracle Application Server• 100+ Faces components
http://www.oracle.com/technology/jsf
Details: JSF & ADF Faces
JSF and JDeveloper 10.1.3
• JSF Page Flow• Visually design Faces navigation model
JSF and JDeveloper 10.1.3
• Declarative data binding – JSR 227• Drag and drop data binding support
Oracle ADF
View
Controller
Model(JSR 227)
Business Services
Rich Client Web / Wireless
JSF
ADF Data Control
ADF Bindings Portlet Bindings
Struts JSF
ADF FacesJSPADF Swing
JavaClassesEJB
ADFBusiness
Components
WebServices
PortletsJSR-168WSRP
TopLink Data Services
Relational Data XML Data
Met
adat
a Se
rvic
es (M
DS)
Packaged Apps
JDBC JCA JDBC WS XML
Mobile Bindings
Legacy Data
DataSource
Oracle ADF Faces
• Standard JSF Components• Supports AJAX• 100+ JSF components• Tree, Tabs, Sliders, Graphs,…
• Mobile Development• Same development experience for different devices
• Now an Open Source Project!• Apache MyFaces / Trinidad
• Portlet Support Coming Soon
http://myfaces.apache.org/
Web Services Runtime
Oracle Application Server 10g R3Oracle Application Server 10g R3
J2EE 1.4J2EE 1.4S
ervletS
ervlet
JSP
JSP
EJBEJB
JND
IJN
DI
JMX
JMX
JCA
JCA
JTAJTA
JMX
JMX
SOAP, WSDL, UDDISOAP, WSDL, UDDI
OW
SM
Agent
OW
SM
Agent
WS
Reliable
WS
Reliable M
sgM
sg
WS
WS
-- Security
Security
WSIF
WSIF
RE
ST
RE
ST
Enterprise W
ebE
nterprise Web
Services
Services
JAX
JAX
-- RP
CR
PC
WS
WS
-- I BP
and BS
PI B
P and B
SP
InteroperabilityInteroperability
TransactionalTransactional
Web Services Annotations 1/2Web Services Annotations 1/2package oracle.demo.ws;
public class SayHello {
public String sayHello(){return "Hello";
}
public String sayHelloTo(String name){
return "Hello "+ name;}
}
Web Services Annotations 2/2Web Services Annotations 2/2package oracle.demo.ws;import javax.jws.*;
@WebService(serviceName = "HelloWorldService", targetNamespace =“http://oracle.demo.ws/” )
public class SayHello {@WebMethod (operationName="sayHello")public String sayHello(){
return "Hello";}
@WebMethod (operationName="sayHelloTo")public String sayHelloTo(String name){
return "Hello "+ name;}
}
Oracle Business Rules Engine
Rules enabled Java Application
ApplicationLogic
Rules
Engine
RuleSessionClass
Rulesrepository Application
Program Rules
Generation
Rule AuthorGUI
facts Facts can be Java objects or XML
Rules SDK
facts
results
Rule Authoring GUI
• Rules Authoring and customization tool• A high level interface for authoring rules suitable for Business
analysts• Provides a business dialect for Rules creation and modification• Uses Rules SDK
Rulesrepository
Mission Critical J2CA 1.5 Infrastructure
OracleAS – J2EE Container
RA
RA
RA
RA
RA
RA
Inbound Outbound
SAP
CICS
Tuxedo
……
WebSphere MQ
Sonic MQ
OC4J JMS
……
Adapters on OC4J 10.1.3
• The Fujitsu-Siemens BeanConnect Experience• BeanConnect• J2CA Resource Adapters for Host Based Applications• Integration with OracleAS
• Attunity• Currently certifying adapters on OC4J 10.1.3
• CurrentTechnologies J2CA adapter Experience• CT-View™ Network Management System
Oracle Enterprise Messaging Service –Components
Enterprise Manager
TibcoWebSphereMQSonicMQ TibcoWebSphereMQ
Oracle Enterprise Messaging Service
JMS Router MessagingGateway
JMS 1.1
Oracle DatabaseOracle Application Server
JMSConnector
NativeInterfacePersistence Persistence
DatabaseMemory File
High Speed Middle Tier Transaction Manager
MessagingPooling JTADataAccessSecurity
EJB ContainerWeb Container
WS-Security WS-Reliability WS Auditing WS Logging
DatabaseResource Manager
Oracle Containers for J2EE
3rd PartyResource Manager
Transaction Manager
Two Phase CommitProtocol
Two Phase CommitProtocol
Other OC4J Instances
Transaction Coordinator (2PC) Transaction Recovery Manager
Flexible Java Classloading:Open Source & 3rd Party Software
• Shared class loader model• Extension to parent/child model• Shared not visible to child
• New classloading hierarchy • OC4J classes in a shared
class loader• Applications define
dependencies on shared libraries
<Insert Picture Here>
Better Mangeability and QoSDeployment
Standards Based Management and Deployment Infrastructure
• Oracle Application Server built on JMX, JSR 77 and JSR 88 standards for management and deployment
• Management console, command line and Ant tasks share same infrastructure
App. 1 …App. 2 App. n
MessagingTransaction PoolingJNDISecurity
Oracle Application Server – J2EE Container
JAX-RPC
App. 3
EJB Servlet/JSP
JMX Management Infrastructure (MBeans, Agents)
Out of the Box Management:Application Server Control
• Browser Based Management Console• Lightweight J2EE application deployed to OracleAS• Manages instances and topology
• Based on new JMX infrastructure• AS Control 10.1.3 is a J2EE Application• Relies on MBeans exposed by local OC4J
• Role Based Management• Administration, Deployment and Monitoring
OC4JJ2EE Applications
OC4J JMX MBeanServer
AS Control User App 2User App 1
Deployment Consistency: Between OC4J and OracleAS
• One utility admin_client.jar • Based on JSR88 deployment API• Deploy, undeploy, start/stop, bindWebApp• Parallel or sequential deployment to cluster
• Deploys EAR, EJB -JAR, WAR, RAR files• Deploys to OC4J standalone, OracleAS single and
multiple instance topologies• Same infrastructure for JDeveloper, OC4J, OracleAS
and Application Server Control
Sample Commands
java -jar admin_client.jar <connection_uri> <username> <password> <command>
Commands are:
-deploy - (Re)deploys an EAR, WAR, RAR or EJB JAR file. -file <path> - The file path of the archive to be deployed.-deploymentName <name> - The name for the deployed application. -contextRoot <root> - Standalone WAR file deployment only. The context
root for the Web module. -sequential - Deploy the archive to each OC4J instance within
the cluster in sequence. If not included, thearchive is simultaneously deployed to allinstances.
-bindAllWebApps - Binds all WAR files within the EAR to thespecified Web site.
-appName <appName> - The parent application's name. -webSiteName <siteName> - The website name. Defaults to 'default-web-site'.
Built in Ant Tasks
• Developer oriented deployment option• Ships with 10.1.3 product, supported!
• Same set of deployment and application lifecycle operations as admin_client.jar• Ant task wrappers around same code
• Deploys to same target set as admin_client.jar• Specify connection using same Service URI as
admin_client.jar in build.xml file
Deployment from ASC with Deployment Plans
• Deployment Plans – Edit Deployment Plan – J2EE App
System MBean BrowserMBeans of a single OC4J instance
Role Based Administration
Hierarchy of Roles
Administrator
Application Administrator
Monitor
Privileges
Full
Deploy, Undeploy, Redeploy, and manage state of all J2EE Applications
Read-Only Access to pages in AS Control
Simple and Clean Topologies:Creation and Management
J2EE AppJ2EE App
OC4JOC4JDMSDMS
J2EE AppJ2EE App
OC4JOC4JDMSDMS
J2EE AppJ2EE App
OC4JOC4JDMSDMS
Process ManagementOracle Application Server 10g R3
Consistent State Replication Infrastructure – EJB and Web
AS-A AS-B AS-CMulticast
Peer
Database
Peer
Application Centric
Primary Site Standby Site
DR SYNC.
Application Application
LDAP Data Storage
Application Data Storage
Security InformationStorage
LDAP Data Storage
Application Data Storage
Security InformationStorage
Metadata Storage
Oracle Application Server Guard
Oracle App Server GuardOracle App Server Guard
Metadata Storage
DNS switch
<Insert Picture Here>
Hot PluggabilityThird Party, Open Source
Hot Pluggable Enterprise Application Server Core
Database
DB2SQL Server
InformixSybaseOracle
Active DirectorySunOne
OIDCOREID
DirectoryServer
TibcoSonic
MQSeriesOJMS
OracleJMS
MessageBus
IISSunOneApache
Web Server DevelopmentTool
JDeveloper Eclipse
Plug in Open Source
• Ship Open Source Infrastructure• HTTP Server based Apache HTTP, PHP, Perl, Ant
• Certify SASH• Spring, Axis, Struts and Hibernate
• Sanity Check Key Open Source Projects• Tapesty, Velocity, MyFaces, OpenLazlo, Xwiki, Log4J …
Eclipse Plug Ins
• Web Tools Project• J2EE Development and Deployment
• Dali Project• EJB 3.0 Persistence
• JavaServer Faces Project• JSF Design Time
• BPEL Project• BPEL Design Time
Server 6 – OAS 10.1.3 H2
Server 5 – OAS 10.1.3 H1
Server 4 – OAS 10.1.3 H1
1- n OC4J Instances
1- n OC4J Instances
1- n OC4J Instances
Container + Applications
Container + Applications
Container + Applications
Pluggable Topology
Server 2 - OAS 10.1.3
OHS(w mod_oc4j)
OPMN
Server 3 - OAS 10.1.3
OHS(w mod_oc4j)
OPMN
JDK 1.4.2 or JDK 5.0
OPMN
JDK 1.4.2 or JDK 5.0
OPMN
JDK 1.4.2 or JDK 5.0
OPMN
Server 7 – OAS 9.0.4/10.1.2
Identity Management
COREID/OID + SSO
JDK 1.3 or JDK 1.4.2
OPMN
Oracle Application Server 10g R3
Cluster
Server 1 - OAS 10.1.2
Web Cache
OPMN
Server 8 – OAS 10.1.4
Portal Server
Container and Portal Infrastructure
JDK 1.3 or JDK 1.4.2
OPMN
<Insert Picture Here>
10.1.3.1 New Features
Goals in Oracle Application Server Core 10.1.3.1
• Common SOA Component infrastructure• Update to EJB 3.0/JPA 1.0 final specification• Expanded server manageability in OracleAS Control• Extended OracleAS 10.1.3.0 clustering• Increased Oracle JMS manageability for ESB• SOA integration of OracleAS Web services• Miscellaneous• JDeveloper
Oracle SOA Suite 10.1.3.1 Beta Runtime
Oracle Application Server 10.1.3.1
Enterprise Service Bus
RoutingAdapters UDDIRegistry
BPEL Process ManagerNativeBPEL
HumanWorkflow
BusinessRules
Web ServicesManager
Security
BAM MonitoringEventsAnalytics
JDeveloper
IntegratedServicesEnvironment
App DevFramework
Installationsoptionen
Update to EJB 3.0 and JPA 1.0
• EJB 3.0 and JPA 1.0 finalized at JavaOne 2006• Oracle keynote and demonstration grounds
• Project Glassfish reference implementation of JPA • Provided by TopLink Essentials
• OracleAS 10.1.3.1 EJB 3.0/JPA 1.0 updates• EJB 3.0 final version• JPA 1.0 – default to TopLink Essentials• Oracle JDeveloper – updates to match runtime• Eclipse Dali – M3 release at JavaOne
Oracle EJB 3.0 Extensions
• Vendor specific deployment annotations• Match with commonly used attributes in
• Simplification of using JPA• Ability to inject EntityManager using @Resource• persistence.xml is option in ejb-jars• Package a persistence.xml in WEB-INF/ instead of WEB-
INF/classes/META-INF
@StatelessDeployment(minInstances = 100, maxInstances = 500, poolCacheTimeout = 120)@Statelesspublic class HelloWorldBean implements HelloWorld
Annotations Support in Other Tiers
• Web Container• Common Annotations defined by JSR-250
• Injection of resources and EJB• Managed classes as defined by Servlet 2.5 spec• JPA Entity Packaging
• Application Client Container• Launches J2EE Application Client• Injection of resources, EJB using annotations/xml
public class InsertServlet extends HttpServlet {@EJB private EmployeeFacade employeeFacade;..}
Expanded OracleAS Control Server Manageability
Supportverticalscalingwith multipleVMs
Supportforprocessmanagement(opmn.xml) configuration
Support of More Complex Topologies and Groups
OracleAS Web 1
OPMN
Mod OC4J
Mods
OHS Listener
...
AS Instance:OracleAS SOA 2
OPMN
AS Instance:OracleAS SOA 1
OPMN
GroupSOA_App1
OC4J1VM=2
GroupSOA_App1
OC4J2VM=2
GroupSOA_App2
OC4J1VM=3
GroupSOA_App2
OC4J2VM=3
AS Instance:OracleAS J2EE 1
OPMN
AS Instance:OracleAS J2EE 2
OPMN
GroupJ2EE_App1
OC4J1VM=3
GroupJ2EE_App2
OC4J2VM=1
GroupJ2EE_App2
OC4J1VM=3
GroupJ2EE_App3
OC4J1VM=1
10.1.3.0 Groups• group (groop) n.
• A Set of OCJ4s with the same name and in the sameCluster
Host 3Host 1
App Server 1
OC4J: green
Admin OC4J
Host 2
App Server 2
OC4J: green
OC4J: yellow
App Server 2
OC4J: green
OC4J: yellow Yellow
Green
OPMN Clustered
10.1.3.1 Groups• group (groop) n.
• A management entity of any given name which contains OC4J instances of any given name within the same Cluster
Host 3Host 1
App Server 1
OC4J: GL
Admin OC4J
Host 2
App Server 2
OC4J: AP
OC4J: yellow
App Server 2
OC4J: red
OC4J: blue
OPMN Clustered
COLORS
APPS
Extended Oracle Application Server 10.1.3.0 Clustering
FormalOC4J grouping model
ProcessandTopologyManagementConfiguration
Increased Manageability ofOracle JMS in OracleAS Control
Oracle Application Server Administrative Command Line and Scripting
• New Ant tasks and administrative client commands• Data source and JMS resource configuration• Cluster deployment of shared libraries
• Administrative scripting• Batching of command lines to admin_client.jar (-script)• Scripting examples with Groovy via JMX
Oracle Ant JDBC Example
• <oracle:addManagedDataSource>
<target name="add-datasource" depends="add-connectionpool"description="Creates the datasources">
<echo message="-----> Adding a DataSource using the ConnectionPool" />
<oracle:addManagedDataSourcedeployerUri="deployer:oc4j:localhost"userid="oc4jadmin" password="welcome1"applicationName="default"dataSourceName="TestDataSource"jndiLocation="jdbc/TestDataSource"connectionPoolName="TestConnectionPool" />
</target>
Oracle Ant JMS Example
• <oracle:addDestination>
<target name="add-destination" depends=“setup"description="Creates a JMS Topic">
<echo message="-----> Adding a JMS Topic" />
<oracle:addDestinationdeployerUri="deployer:oc4j:localhost"userid="oc4jadmin" password="welcome1"domain="Topic"name="AntDemoTopic"jndilocation="jms/AntDemoTopic"description="Ze Demo Topic from Ant" />
</target>
<Insert Picture Here>
Early AdoptersMarketspace
Analyst Perspective
Gartner Magic Quadrant for Enterprise Application Servers, 2Q06
Forrester Wave Application Server Platforms,Q1 2005, March 2005
Themes Driving Oracle Application Server 10g R3
• Great Developer Experience• Leadership with JSF, EJB 3.0, Web Services and Rules• Declarative, Standards Based Development
• Better Manageability and QoS• Deployment and Clustering• High Availability
• Hot Pluggability• Open Source Leverage, Integration, Contributions• Run Great With Third Party Middleware
For More Information
http://search.oracle.com
ororacle.com
F R A G E NA N T W O R T E N