Title: TechSelect 2006
1TechSelect 2006
- Whats New in EAServer 6.0
- Evan Ireland
- Director of Engineering
- Information Technology and Solutions Group
- Sybase, Inc.
- eireland_at_sybase.com
2Whats New in EAServer 6.0?
- J2EE 1.4 Certification
- New Server Architecture
- Web Management Console
- New Command Line Tools
- New Configuration Features
- New Monitoring Features
- New Performance Features
- New Client Features
- New Clustering Features
- New Messaging Features
- New Security Features
3J2EE 1.4 Certification
- Major Additions
- JSR 88 J2EE Deployment API.
- JSR 77 J2EE Management API.
- JSR 115 Java Authorization Contract for
Containers. - EJB Timer Service.
- EJB Web Services.
4Old Server Architecture (5.X)
libjdispatch (Server Kernel)Request
Dispatcher CORBA Container Jaguar/Management Jagua
r/Monitoring Jaguar C API
DB Connection Manager(C/C, Java)
Message Service(Java)
TDSHandler(Open Server)
TDS / MASPClients(Open Client)
HTTPHandler (C/C)
SecurityManager(C/C)
NameService(Java)
HTTPClients(XML, WS)
IIOPHandler (C/C)
Transaction Manager(C/C, Java)
JaguarRepository(Java)
Java Clientsfor CORBA, EJB JMS
libjcc CORBA Clients(C, PB)
CORBA Components (with generated or dynamic
skeletons)
C
Java
EJB 2.0
COM
PB NVO
jagproxy COMClients(VB, ASP)
Jaguar API(Java)
IIOP Clients(CORBA 2.2)
5New Server Architecture (6.0)
DB Connection Manager(Java)
Message Service(Java)
TDSClients(Open Client)
ServerStartupClass
6.1 TDSHandler(jTDS)
WebContainer(Java)
SecurityManager(Java)
NameService(Java)
HTTPClients(XML, WS)
DJC / Web Components
IIOPHandler(Java)
Transaction Manager(Java)
TaskScheduler(Java)
Java Clientsfor CORBA, EJB JMS
DJC / EJBComponents
libjcc CORBA Clients(C, PB)
CORBA Components wrapped as EJBs
EJB 2.1Components
EJB wrappers
6.1? .NETComponents
C
Java
PB NVO
6.1 .NETClients(C, VB, )
Jaguar C API(libjdispatch)
Jaguar API(Java)
JNICCRuntime
IIOP Clients(CORBA 2.2)
6What does DJC stand for?
- DJC Dynamic Java Components.
- Patent-pending lightweight component technology.
- Attribute-based code generation framework.
7What does JNICC stand for?
- The Sybase JNI Compiler (JNICC) is a command line
tool which can generate - C proxies for accessing Java classes and
interfaces. - C classes for implementing Java native methods.
- The tool is Java-centric, and does not in any way
rely on CORBA IDL.
8Why are CORBA componentswrapped as EJBs?
- Simplifies configuration
- One set of Ant configuration tasks can be used
for both EJB and CORBA components - Simplifies access from web tier
- Servlets, JSP and JSF pages can all use ejb-refs
or ejb-local-refs to access components. - PowerBuilder NVOs in EAServer will be treated
just as they are in third party application
servers with the new PowerBuilder Application
Server Plugin.
9Advantages of New Architecture
- Improved Extensibility
- Easier for Sybase and/or partners to add new
features - Improved Modularity
- Allows more deployment options (e.g. JMS-only)
- Improved Monitoring
- To help with tuning and troubleshooting
- Improved Performance
- Improved Quality
- Reduced Size
10Backwards Compatibility
- API Compatibility (e.g. JagGetUserName)
- Script Compatibility (e.g. jagant, jagtool)
- Some administrative tasks will be different from
EAS 5.X, most configuration tasks should be
simpler. - Issues of API or script incompatibility should be
considered as bugs, unless they are documented. - If we removed something that you were depending
on, let us know (open a case), and well see what
we can do.
11Web Management Console
- Web Application with Sybase Central style
tree-view navigation. - http//myhost8000/console
12New Command Line Tools
- configure runs configure target in specified
Ant script changes property files in
repository. - recompile runs recompile target in specified
Ant script regenerates code for lightweight
component classes. - wlogin, wlogout single sign on for remote
server administrative access. - wfs transfers file to or from remote server.
- wsh runs command on remote server.
13New Configuration Features
- Ant Configuration Scripts
- Automatic Database Startup
- Export Configurations
- Named Class Loaders
- Repository Branches
14Ant Configuration Scripts
- When a component package (e.g. EJB-JAR) is
deployed, an Ant configuration script is
automatically generated. - Like a EAServer 5.X jagant script, configuration
is achieved with simple setProperties tasks. No
complex XML DTD or schema is required. - The generated script can be edited directly, or a
user-defined script can be included in the
deployment archive or created after deployment. - The generated script calls the user-defined
script, to merge the default and user-defined
properties. - Editing and running configuration scripts is
supported from the web management console. - See html/help/en/index.html for configuration
reference.
15Automatic Database Startup
- The default Data Source is preconfigured to
automatically start SQL Anywhere if it is not
already running. - It will create the database file first if no
database file exists. - This behaviour can be configured for other
databases by using an Ant script.
16Export Configurations
- An export configuration is a named collection
of classes, files and deployed modules. - Build operation allows creation of a JAR or ZIP
file containing the configuration. - Synchronize operation allows synchronization of
a configuration to one or more servers or
clusters. - New configurations can be defined from scratch or
by composition of existing configurations. - An export configuration can include server
infrastructure as well as deployed modules, so
for example a JMS-only server configuration
could be created.
17Named Class Loaders
- EAServer 5.X has Server, Application, Package and
Component level class loaders. - EAServer 6.0 generalizes this to named class
loaders, which specify - Class path.
- Optional parent class loader.
- Names of shared classes or packages which must be
loaded by the parent first. - Names of shared classes or packages which must be
loaded by the system first. - Loading strategy (loader or parent first).
- (Some of this capability has been ported back to
5.X.)
18Repository Branches
- The setProperties Ant task can be applied at
server, cluster or global scope, e.g.
ltsetProperties dataSourcedefault
serverBranchabcgt ltproperty
namedatabaseType valueSybase_ASA/gt
ltproperty nameserverName valuedb-host1/gt
ltproperty nameportNumber value2638/gtlt/setPr
opertiesgt ltsetProperties dataSourcedefault
clusterBranchxyzgt ltproperty
namedatabaseType valueSybase_ASE/gt
ltproperty nameserverName valuedb-host2/gt
ltproperty nameportNumber value5000/gtlt/setPr
opertiesgt ltsetProperties dataSourcedefaultgt
lt! global --gt ltproperty namedatabaseType
valueSybase_ASA/gt ltproperty
nameserverName valuelocalhost/gt ltproperty
nameportNumber value2638/gtlt/setPropertiesgt
19Scheduled Tasks
- With console or configure, you can configure
tasks for execution at server startup, shutdown,
or according to a schedule (like at or cron). - Possible task actions include
- Check File, Run Application Client, Run Component
Method, Run Database Command, Run System Command - Command output can be optionally sent via email
or JMS. - Tasks have been predefined to check the server
log for various types of messages. To activate
them, set servers scheduledTasks property.
20New Monitoring Features
- Browse Name Bindings
- Client Tracing Options
- Server Tracing Options
- Component Tracing
- Component Profiling
- Runtime Monitoring
- Improved Exception Logging
- Exception Cross Reference
- Transaction Cross Reference
- Thread Monitors
21Browse Name Bindings
- In Web Console, under Name Bindings node.
- Shows all registered name bindings, with their
binding scope. - Indicates which of the registered bindings are
currently active. - Might be helpful if your client is getting
lookup failures.
22Client Tracing Options
- RMI-IIOP Trace for Java clients
- Enable by setting Java system property
djc.rmiTracetrue on command line when starting
client application. - Use djc.logFile system property to determine log
file. - Set djc.echoLogtrue to echo log messages to
console.
23Server Tracing Options
- Enabled through Web Console or configuration
script. - RMI-IIOP Trace
- For tracing remote calls from clients and
intercomponent calls that use stubs (in-memory
IIOP). - EJB Trace
- For tracing the execution of EJB (and CORBA)
components. - Web Trace
- For tracing the execution of Java Server Pages
and servlets. - JMS Trace
- For tracing and troubleshooting message
processing when using the Message Service. - SQL Trace
- For tracing SQL Data Source access. Particularly
useful for EJB entity beans with CMP.
24Component Tracing
- Code for component tracing is generated by
default. - See property ejb.enableTracing or
web.enableTracing in generated Ant configuration
script - At server startup, enable tracing code to be
active with command line option (or server
properties) - -traceejb.components.mypackage
- -traceweb.components.mypackage
- Or, enable for all packages with command line
options - -ejbTrace
- -webTrace
- View trace messages in server log.
25Component Profiling
- Code for component profiling is generated by
default. - See property ejb.enableProfiling or
web.enableProfiling in generated Ant
configuration script - Ensure that statistics are enabled at the server
level (they are enabled by default). - View statistics using Web Console or
(recommended) access them via a Web Query from
your spreadsheet. - http//myhost8000/wsh/run?commandget-statistics
26Runtime Monitoring
- Replaced by Statistics viewable in the Web
Console. - The Jaguar CORBA APIs are still supported for
backwards compatibility. - JaguarManagement
- JaguarMonitoring
- JMX MBean API is also available.
- Using your spreadsheet software access the
statistics is highly recommended. - http//myhost8000/wsh/run?commandget-statistics
- Or, capture 60 second or 60 minute summaries by
enabling the Dump60SecondStatistics or
Dump60MinuteStatistics scheduled task. Output
file location - logs/statistics/myserver-YYYY-MM-DD-HH-MM.statisti
cs
27Improved Exception Logging
- Logging of application exceptions can be
enabled/disabled at the server level. - Were not logged in EAServer 5.X.
- Logging of system exceptions can be
enabled/disabled at the server level. - Could not be disabled in EAServer 5.X.
- Messages appear in the server log file.
28Exception Cross Reference
- Server Property Generate Exception Cross
Reference. - Attempts to filter out repeat exceptions and
create a log file listing all of the distinct
exceptions that are present in the server log. - Output file location
- logs/my-server-name.exceptions
- If your log contains many exceptions, enabling
this feature may cause performance problems. - On the other hand, it may make it easier for you
to find a needle in a haystack. - Give it a try!
29Transaction Cross Reference
- Server Property Generate Transaction Cross
Reference. - For each distinct transaction (business method
that initiates a transaction), prints information
about SQL statements and JMS operations that were
executed in the transaction. - Output file location
- logs/transactions/myserver-YYYY-MM-DD-HH-MM.transa
ctions
30Thread Monitors
- Full replacement for HTTP and IIOP flow control.
- Available for web components and EJB components.
- (And CORBA / PB components, remember that they
are now wrapped as EJBs). - Can limit the number of threads executing under
each named monitor. Or leave limit unspecified,
if you just want to see what your threads are
doing. - Named monitors can be associated with components
by using Ant configuration scripts. - View Active Threads and Waiting Threads in
Web Console.
31Thread Monitors - Continued
- Thread Monitors are also useful for
- Avoiding lock (synchronization) contention with
shared data structures. - Reducing resource utilization, e.g. limiting the
number of threads concurrently accessing a data
source.
32New Performance Features
- Query Batching
- Object and Query Cache with Parent Versioning
- Result Caching
- Transaction Batching
33Query Batching (for EJB CMP)
- Consider the algorithm
- Runs many queries per transaction, many round
trips between application server and database. - Query Batching creates a prefetch theory for
each transaction and uses it to create optimized
stored procedures which avoid multiple round
trips. - See html/help/en/com.sybase.djc.ant.TransactionPro
perty.htmlprefetch
double total 0.0 Customer c
ch.findByName(My Customer) for (Order o
c.getOrders()) for (OrderLine ol
o.getOrderLines()) total
ol.getItem().getPrice() ol.getQuantity()
34Parent Versioning (for EJB CMP)
- Same problem, different solution.
- Enable the use of object or query caching to
reduce database queries, using parent version
check to ensure serializability. - Seehtml/help/en/com.sybase.djc.ant.PersistentObj
ect.htmlparentVersion, html/help/en/com.sybase.dj
c.ant.QueryMethod.htmlparentVersion - Best used with Sybase databases ?
- Sorry but Oracle doesnt support SQL syntax for
acquiring shared locks, so if you use it for
read-only transactions you may get forced
rollbacks as we must use exclusive locks to
ensure serializability ?
35Result Caching (for Stateless Components)
- Any business method of a session bean (or CORBA
component) can be enabled for result caching
using an Ant configuration script, e.g. - ltcacheResult cacheTimeout120/gt
- Table version (updated by database trigger) can
be used instead of timeout to ensure
transactional consistency of cached results. - ltcacheResult tableVersionref_tv.tv/gt
36Transaction Batching
- Allows transactions from separate threads to be
merged together to reduce round-trips to database
server. - See html/help/en/com.sybase.djc.ant.TransactionPro
perty.htmlbatch
37New Client Features
- Automatic Server Startup
- Dynamic Stub Generation
- IIOP Data Compression
38Automatic Server Startup
- EJB and JMS clients can use special provider URLs
to automatically start the application server if
it isnt already running - run-servermy-server-name
- Run server in-process with the client
- start-servermy-server-name
- Start server in separate process
- This is quite handy for testing!
39Dynamic Stub Generation (for Java)
- Stub generation has two parts
- generation of remote interfaces
- for EJB, the developer creates these interfaces
- for CORBA, the IDL compiler generates these
- generation of stub classes
- for EJB, the deployment tool generates these
- for CORBA, the stub-compiler tool generates these
- If your client has the interfaces but not the
stub classes, they will be generated and compiled
at runtime. - Your client must be using a JDK (with javac) to
compile stubs at runtime. - If your client has only a JRE, you must generate
stub classes in advance (with deployment tool or
stub-compiler).
40IIOP Data Compression
- For EJB / JMS / CORBA Java clients.
- Enable using InitialContext or ORB property
- props.put(dataCompression, true)
- Or specify in provider URL
- iiop//myhost2000?dataCompressiontrue
- Uses GZIP algorithm
- (from package java.util.zip)
- To use from PowerBuilder clients, use the
EJBConnection object to connect to EAServer.
41New Clustering Features
- Automatic Failover
- Request and Response Logging
- Cluster Partitions
42Automatic Failover - Request and Response Logging
- Automatic failover can result in repeated method
execution. If business methods are not
idempotent, this can cause problems with data
integrity. - Any void business method of a session bean can
be enabled for request logging, to ignore
duplicate calls during failover. - See html/help/en/com.sybase.djc.ant.RequestLogProp
erty.html - Any non-void business method of a session bean
can be enabled for response logging, to ignore
duplicate calls during failover. - See html/help/en/com.sybase.djc.ant.ResponseLogPro
perty.html - Request logging is slightly more efficient, since
it doesnt need to log any result data (only a
request key). - Logging uses a database. Log records are
automatically deleted unless automatic failover
occurs, in which case the log records must be
retained to enable duplicate detection.
43Cluster Partitions
- A cluster may include one or more named
partitions. - Each partition identifies
- Preferred servers
- Alternate servers
- Components can be assigned to run in particular
partitions, e.g. - ltclusterPartition nameMyPartition/gt
- A Java client will communicate with one or more
of a partitions preferred servers, unless all
are unavailable, in which case it will try the
alternate servers. This provides an effective way
to perform load balancing while not sacrificing
high availability. - libjcc-based clients (C, PB) are currently
unaware of the distinction between preferred and
alternate servers. - Can be used as a replacement for the EAServer
5.XHot Standby licensing option.
44New Messaging Features
- New Java Implementation
- Asynchronous Business Methods
- In-Order Message Processing
- Duplicate Message Detection
- Fast IN Expression Evaluation
- Message Store And Forward
45New JMS Implementation
- EAServer 5.X Message Service is a CORBA / Java
component. - EAServer 6.0 Message Service is a lightweight
Java component. - Faster for both persistent and non-persistent
messages. - 5 10 times faster for most things!
- Large cluster scalability has been improved.
46Asynchronous Business Methods
- Were going to be included in 6.0, but the Ant
configuration tasks were not completed in time
for GA. - Should be in EAServer 6.1.
47In-Order Message Processing
- In-order message processing is supported (when
requested) even when multiple servers or threads
are listening on the same queue or topic. - Set the processMessagesInOrder message queue
property in the Web Console (or using an Ant
script).
48Duplicate Message Detection
- A queue or topic can be configured to ignore
duplicate messages. - Duplicate message detection requires a unique key
which can be taken from one of a messages header
properties. - Set the ignoreDuplicateMessages message queue or
topic properties in the Web Console (or using an
Ant script).
49Fast IN Expression Evaluation
- Optimized evaluation of IN expressions to
improve performance of ticker-style JMS
publish/subscribe applications, e.g. - Topic Name
- StockQuote
- Message Selector
- symbol in (SY, AB, CD, EF, )
- Each client could use their own customized
message selector expression, with many different
stock symbols. - Publishers can still efficiently evaluate the
selector expressions.
50Message Store And Forward
- Consider the scenario server S1 with queue Q1,
server S2 with queue Q2, server S3 with queue Q3. - Pull forwarding is supported from S2 to S1
- ltproperty namepullMessagesFrom valueQ2_at_S1/gt
- Push forwarding is supported from S1 to S3
- ltproperty namepushMessagesTo valueQ2_at_S3/gt
- The target server must be defined as a JMS
Provider using the Web Console or an Ant
configuration script. - Two-phase forwarding protocol guarantees
exactly-once propagation of messages, without
using XA / 2PC. - Can pull from and push to third-party JMS
providers. - Must use a Resource Adapter (XA) for exactly-once
propagation. - Batched forwarding may be useful for high
performance in peer-to-peer or grid-style server
networks.
51Content Based Routing
- Header and system properties can be used in
construction of source or target queue addresses - ltproperty namepullMessagesFrom valueMyQueue.
mySystemProperty_at_S1/gt - ltproperty namepushMessagesTo valueMyQueue.
myHeaderProperty_at_S1/gt - Note for pullMessagesFrom, only system
properties can be used.
52New Security Features
- IIOP Single Sign On scripts are provided for
login/logout to EJB and JMS providers - ejb-login, ejb-logout
- jms-login, jms-logout
- per-machine, per-user secure storage of client
credentials, (uses DPAPI on Windows), credentials
are maintained after restart of client computer. - Useful for standalone EJB / JMS clients.
53New Security Features - Continued
- Many delegation options for password checking.
- cts-auth, ftp, http, jaas, jdbc, jndi,
local-hash, none, os-auth - Mapping of client certificates to usernames.
- Can limit component callers to co-located clients
using the local role. This prevents remote
clients accessing sensitive components, but
allows them to be called by other components in
the same server. - Support for port-based access control.
- Support for role hierarchies.
- Multiple security domains.
- Can use e-mail addresses as usernames.
- New simplified APIs for custom AuthService and
RoleService - (if you implement them in Java)
- Support for JACC access control policy (part of
J2EE 1.4)
54What will we be looking at next?(EAServer 6.1
and later)
- Support for MASP clients(MASP Methods As
Stored Procedures) - Support for .NET clients (to call EJB and
JMS)including support for .NET Compact Framework - Support for .NET components
- Support for PB.NET clients (to call EJB and JMS)
- Support for PB.NET components
- Java Enterprise Edition 5.0
- Please advise product management of your
priorities for - these and other features.
55Questions?