在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √...

64

Transcript of 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √...

Page 1: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •
Page 2: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

<在此处插入图片>

使用 Oracle WebLogic Suite 11g 进行开发的相关技巧、工具和方法

华成高级销售顾问

Page 3: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

以下内容旨在概述产品的总体发展方向。此信息仅供参考,不可纳入任何合同。此信息不承诺提供任何资料、代码或功能,并且不应作为制定购买决策的依据。此处所述有关 Oracle 产品的任何特性或功能的开发、发布以及相应的日程安排均由 Oracle

自行决定。

Page 4: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

议题

• 使用轻型服务器

• 采用 Java Enterprise Edition 5.0

• 使用 FastSwap 实现快速开发/测试

• 使用分割开发

• 利用 WebLogic Server Ant 任务

• 使用 WebLogic Server 工具

• 使用智能 IDE 特性

• 自动创建开发/测试环境

• 应用程序类加载

• 应用程序日志记录

• 利用 Oracle Coherence*Web

Page 5: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

1 使用轻型服务器

Page 6: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

轻型安装

• 尽快安装并配置 WebLogic Server 10.3 实例

• 使用网络安装向导– 初始下载仅为 39 Mb

– 选择要安装的内容

– 下载并安装组件

• 最小服务器安装 < 179 Mb

– 使用预安装的 JDK < 151 Mb

• ISV 的核心服务器安装程序 < 250 Mb

Page 7: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

轻型安装

Page 8: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

轻型、友好的服务器

• 选择性服务启动– 选择包含所有服务的完整服务器

– 或没有 EJB、JMS 和 JCA 的轻型服务器

– 指定 -DserverType=“wls”或 -DserverType=“wlx”作为启动属性

• 快速服务器启动– 在开发模式下按需部署内部应用程序

• 开发人员友好的控制台设置– 禁用更改中心 — 无需锁定或编辑

– 禁用确认对话框

– 自动启动应用程序和服务

– 和上一版本相比,响应时间缩短了 50%

Page 9: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

2 采用 Java Enterprise

Edition 5.0

Page 10: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

√J2EE Management 1.1

√J2EE Deployment 1.2

√JMX 1.2

√JACC/JAAS 1.0

√JTA 1.1

√JCA 1.5

√JNDI 1.2

√JMS 1.1

√JAX-WS 2.0

√EJB 3.0

√Servlet 2.5

√JSF 1.2

√JSP 2.1

Java EE 5.0 APIs 支持

JDBC 3.0 √

• 符合标准• 经认证兼容 JEE 5.0

WebLogic Server 标准Java EE 5.0 和 Java SE 5.0/6.0

Page 11: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

Java EE5 开发人员工作效率

• Java EE5 的主要主题是开发人员工作效率

• 广泛使用批注来替代 XML

– 构建裸应用程序 — 没有部署描述文件!

• 依赖注入– 基于批注的容器资源注入

– 无需更多的 JNDI 查找

• EJB 3.0 == 更加简便、易用的 EJB 模型– 编码任务更少的基础架构 — 仅需要一个业务接口和实现类

– 使用批注定义的 Bean 和行为

– 拦截器

• 专用轻型持久性 API

– 行业同类最佳,去除了 EJB 2.x CMP 的所有复杂性

– 实体基于 POJO,使用批注进行 O-R 映射

– 使用 EntityManager API 创建、查询、移除实体 Bean 实例

– 广泛查询支持 — 有名的、SQL 和 EJBQL

Page 12: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

EJB 3.0 实体 Bean

@Entity

@Table(name = "EMPLOYEES")

@NamedQuery(name="Employee.findAll", query="select o from Employee o")

public class Employee implements Serializable {

@Id

@Column(name = "EMPNO")

private int empNo;

private String eName;

...

@ManyToOne

@JoinColumn(name="MANAGER_ID",referencedColumnName="EMPLOYEE_ID")

private Employee manager;

public int getEmpNo() {

return this.empNo;

}

public Employee getManager() {

return this.manager;

}

}

Page 13: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

EJB 3.0 会话 Bean

@Remote

public interface EmployeeManager {

Employee createEmployee(int empNo, String name);

Employee findEmployeeByEmpNo(int empNo);

}

@Stateless(mappedName=―EmployeeManager‖)

public class EmployeeManagerBean implements EmployeeManager {

@PersistenceContext private EntityManager em;

public Employee findEmployeeByEmpNo(int empNo) {

return ((Employee) em.find(Employee.class, empNo));

}

public Employee createEmployee(int empNo, String eName) {

Employee emp = new Employee(empNo, eName);

em.persist(emp);

return emp;

}

}

Page 14: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

包含相关性注入的 Servlet 2.5

public class HRFaceServlet extends HttpServlet {

// Inject the CalculatorBean

@EJB(name=―EmployeeManager")

EmployeeManager mgr;

public void doGet(HttpServletRequest req, HttpServletResponse res)

throws ServletException, IOException {

...

// Create new Employee

Employee newEmp = mgr.createEmployee(910377, “bill.bloggs”);

// Assign Employee to Manager

Employee mgr = mgr.findEmployee(mgrId);

mgr.addEmployee(newEmp);

...

}

Page 15: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

3 使用 FastSwap 实现快速开发/测试

Page 16: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

开发

部署

缩短开发周期

FastSwap 可实现工作效率最大化

• 传统 JEE 开发周期:

编辑 > 构建 > 部署 > 测试

• 每次代码更改开发人员都必须完成这一周期

• 现代 IDE 通过条件编译去除了“构建”步骤:

编辑 > 部署 > 测试

• FastSwap 的目标是去除“部署”步骤

编辑 > 测试

• Web 开发人员更改其代码,刷新其浏览器,并立即查看结果

快速切换

Page 17: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

FastSwap 可实现工作效率最大化

• 发展中的下一个步骤

– 重新部署 — 需要重新加载整个应用程序

– “热”部署

– 部分重新部署/分割目录 — 需要删除并重新创建类加载器

– FastSwap

• 通过 Java 6 增强实现

– java.lang.instrumentation. Instrumentation.retransformClasses(Class...)

• 保持应用程序状态

– 仅为修改的方法替换字节代码

– 维护实例变量

• 通过部署描述文件中的设置实现

– 仅开发模式

Page 18: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

FastSwap 支持的类更改

• 添加、移除构造函数和方法– 包括 static 方法

– 包括 final 方法

– 不支持添加和移除 final 方法

• 添加、移除字段– 包括 static 字段

– 包括 final 字段

• 更改构造函数和方法代码

• 更改构造函数、方法和字段修饰符

• 为接口添加方法

Page 19: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

在 Eclipse 中启用 FastSwap

配置项目以编译到分解式目录

在 weblogic-application.xml 中启用 wls-fastswap

Page 20: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

在 Eclipse 中使用 FastSwap

Page 21: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

4 使用分割开发

Page 22: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

WebLogic Server 分割开发

• 使用 WebLogic 分割开发启动新项目

• 依据惯例开发– 指定 EJB、web 模块和常用库的目录布局

– 指定源代码、部署描述符、HTML 和图像等的位置

• 使用工具自动生成构建文件– 检查目录结构以推断模块类型

– 使用 Ant 任务来帮助重复构建、更改和部署 Java EE 应用程序。

– 将项目源和生成的构件分离

• 提供了– 快速开发和部署

– 简化的构建脚本

– 与源控制系统轻松集成

Page 23: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

依据惯例开发

+---APP-INF

| +---classes

| | applicationresource.properties

| +---lib

| GenericResourceLoader.jar

|

+---appUtils

| +---examples\hello\apputils\AppUtils.java

|

+---helloEJB

| +---examples\hello\ejb\HelloBean.java

| +---examples\hello\ejb\Hello.java

|

+---helloWebApp

| | index.jsp

| | wls_examples.css

| +---WEB-INF

| | web.xml

| | weblogic.xml

| +---src

| +---examples\hello\utils\WebAppUtils.java

|

+---META-INF

application.xml

weblogic-application.xml

• 创建项目目录结构

• 类似于 JEE 存档格式

• 模块位于顶层

• 部署描述文件放置在 META-INF 和 WEB-INF 目录下

• 源代码放置在特定模块的包结构中

• Web 模块源代码放置在 WEB-INF/src 目录下

Page 24: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

生成 Ant 构建文件

• 使用 weblogic.BuildXMLGen 生成 Ant 构建文件– 检验目录结构,并使用适当的目标生成对应的构建文件

– 使用 Oracle Ant 任务

Usage:java weblogic.BuildXMLGen [options] <src_dir>

where options include:

-help Print the standard usage message.

-version Print version information.

-projectName <project name> name of the ANT project.

-d <directory> directory where build.xml is created.

Default is the current directory.

-file <build.xml> name of the generated build file.

-username <username> user name for deploy commands.

-password <password> password for the user.

-adminurl <url> Administatrion Server URL.

-librarydir <directories> Comma-separated list of directories

$ java weblogic.BuildXMLGen -projectName helloWorld -d .-username weblogic -password weblogic .

Page 25: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

生成的 Ant 构建文件目标

$ant –p

Main targets:

appc Runs weblogic.appc on your application

build Compiles helloWorld application and runs appc

clean Deletes the build directory

compile Only compiles helloWorld application, no appc

compile.appUtils Compiles just the appUtils module of the application

compile.helloEJB Compiles just the helloEJB module of the application

compile.helloWebApp Compiles just the helloWebApp module of the application

config.server Configure server with resources required by application

deploy Deploys (and redeploys) the entire hellowWorld application

ear Package a standard JEE EAR for distribution

ear.exploded Package a standard exploded JEE EAR

redeploy.appStartup Redeploys just the appStartup module of the application

redeploy.appUtils Redeploys just the appUtils module of the application

redeploy.helloEJB Redeploys just the helloEJB module of the application

redeploy.helloWebApp Redeploys just the helloWebApp module of the application

undeploy Undeploys the entire helloWorld application

Page 26: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

5 使用 WebLogic Server

Ant 任务

Page 27: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

WebLogic Server Ant 任务

• 轻松将 WebLogic Server 操作集成到 Ant 构建脚本中

• 启动、停止和重新启动服务器的任务

• 部署、取消部署和重新部署的任务

• 调出以执行 WLST 脚本的任务

Page 28: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

Ant 任务定义

<path id="WLS_CLASSPATH">

<pathelement path="${WLS_HOME}/server/lib/wlfullclient.jar"/>

</path>

<property name="WLS_CLASSPATH" refid="WLS_CLASSPATH"/>

<taskdef name="wldeploy"

classname="weblogic.ant.taskdefs.management.WLDeploy"

classpathref="WLS_CLASSPATH"/>

<taskdef name="wlserver"

classname="weblogic.ant.taskdefs.management.WLServer"

classpathref="WLS_CLASSPATH"/>

<taskdef name="wlst"

classname="weblogic.ant.taskdefs.management.WLSTTask"

classpathref="WLS_CLASSPATH"/>

Page 29: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

<wldeploy/>

<target name="server_deploy" depends="all">

<wldeploy

action="deploy"

adminurl="${wls.adminurl}" targets="${wls.server}"

user="${wls.user}" password="${wls.password}"

source="${dist.dir}" name="${app.name}"

verbose="${wls.verbose}" debug="${wls.debug}"/>

</target>

• 将应用程序部署到目标服务器

Page 30: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

6 使用WebLogic Server 工具

Page 31: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

WebLogic Server 工具

• WebLogic Server 为开发人员提供了多种有用的工具– 根据需求整合到开发流程中

• 执行前设置环境– <DOMAIN_HOME>/bin/setDomainEnv.cmd

weblogic.appc 编译 JSP、EJB,验证部署描述文件

weblogic.marathon.ddinit.EarInit 生成 EAR 级的部署描述文件

weblogic.marathon.ddinit.WebInit 生成 Web 模块部署描述文件

weblogic.DDConverter 将部署描述文件转换为当前 WLS 版本

weblogic.Deployer 命令行部署实用程序

weblogic.PlanGenerator 为应用程序生成模板部署计划

Page 32: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

JRockit Mission Control

• JRockit 的扩展,可以在运行时分析、监视、管理和诊断 Java 应用程序

• 通过 JRockit Mission Control GUI 公开

– JRockit Management Console

– JRockit Runtime Analyzer (JRA)

– Memory Leak Detector

– 延迟分析

• 集成到 JVM

– 近乎零开销

– 按需提供,无需工具

Page 33: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

7 使用智能 IDE 特性

Page 34: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

构件

AppXRay™

表现层

组件

数据访问

外部资源

JSPCSS JSF JSTLHTML Struts

Web

服务POJO

资源包

XML

模式Java

变量

Java/Java EE

Web 服务

WebLogic Server

Spring、ORM、DB

Spring

DAO

EJB 3

JPAHibernate

OpenJPA

Kodo

Oracle Enterprise Pack for Eclipse开源技术的应用减少了学习时间

Page 35: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

OEPE 概述

• 经典 Workshop 特性

– 基于 Eclipse 3.4 + WTP 3.0

– AppXRay

– 用于 JSP、JSF 和 Struts 的 WYSIWYG

– EJB 2 和 EJB 3 工具

– 数据库和 ORM 工具

– Web 服务(JAX-WS 和 JAX-RPC)

– Spring Bean

– 完全支持 WLS 10.4 和较早版本

– 支持其他服务(Tomcat、JBoss、Websphere

和 Oracle 等)

– 升级

• 与现有 Oracle Eclipse 计划集成

– Web 工具 Web 页面设计器

– Web 工具 JSF 项目

– Dali/DB 工具/EclipseLink

Page 36: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

AppXRay™

Oracle 的 AppXRay™ 在设计时即提供了即输即得的编译器级识别(识别已不仅仅局限于 java)

,提供了代码和批注补全、代码导航、相关性可视化、生成的类与配置文件之间一致性的检查、

预构建错误检查和了解整个应用程序的验证等方面的独特功能。

为以下内容提供设计时编译器识别:

• Java、HTML、CSS

• JSP/JSTL、Struts、Tiles、JSF

• EJB3、Oracle Kodo、Hibernate

• Java 资源包和变量

Page 37: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

AppXRay:AppXaminer

继承他人开发的代码或应用程序的开发人员会感受到 AppXaminer 的价值。

通过简单的右键单击操作查看所有设计时构件之间的关系,然后过滤掉不需要的内容。AppXaminer 还允许在特定相关实例间导航。

Page 38: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

8 自动创建开发/测试环境

Page 39: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

开发/测试环境的自动化

• 创建开发、集成和常规测试服务器可能是项负担– 需要创建域

– 需要使用资源(jdbc、jms 和库)填充域

– 需要能够重新设置和重新创建域

• 手动方法会导致错误和不一致– 结果不好保证

• 需要可重复的、可自动化的解决方案– 可从命令行执行,通过 <wlst> 执行 Ant 任务,持续集成服务器产品

• WebLogic Server 通过 WLST 提供脚本解决方案来满足这一需求

Page 40: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

WebLogic Scripting Tool (WLST)

• 命令行脚本接口,用来管理和监视WebLogic Server 实例、集群和域

• 基于 Python 的 100% 纯 Java 实现

• 操作模式 —(脚本/交互) ↔ (联机/脱机)

• 为在环境间传播配置更改提供了可重复流程

• 快速实现对环境的复制和迁移

Page 41: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

使用 WLST 创建资源

# Database configuration

dataSources = splitMap(env, "datasource.")

for (dataSourceName, properties) in dataSources.items():

cd("/")

jdbcSystemResource = JDBCSystemResource(dataSourceName)

dataSources[dataSourceName] = jdbcSystemResourcecd("JDBCSystemResource/%s" % jdbcSystemResource.name)

cd("JdbcResource/%s" % jdbcSystemResource.name)

JDBCDriverParams("ignored", driverName = "oracle.jdbc.OracleDriver",

passwordEncrypted = properties["password"],

url = properties["url"])

JDBCConnectionPoolParams("ignored", initialCapacity = 1, maxCapacity = int(properties["capacity"]),

secondsToTrustAnIdlePoolConnection = 10,

shrinkFrequencySeconds = 0, statementCacheSize = 100,

testConnectionsOnReserve = 1, testFrequencySeconds = 0,

testTableName = "SQL SELECT 1 FROM dual WHERE 1=2")

Page 42: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

9 应用程序类加载

Page 43: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

应用程序类加载

• 开发人员负责开发和装配应用程序– 在应用程序内使用多个代码/库来源

– 内部库 + Spring、Xerces、Log4J、apache-commons-*……

• 了解类加载工作方式对正确有效使用 Java 库非常重要– 从何处加载哪些类

– 高效地重用共享库

– 避免 ClassCastExceptions

• WebLogic Server 类加载是一种功能强大的机制,它的使用可带来良好效果– 重用通用共享库

– 过滤类加载器以控制库可见性

– 构造自定义模块类加载器层次结构

Page 44: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

共享库的方法

• 系统类路径– 自动将 $DOMAIN/lib 添加到类路径

– 在 setDomainEnv、commEnv 中修改类路径设置

• 应用程序级– APP-INF/lib 用于打包的库

– APP-INF/classes 用于非打包的类

– META-INF/Manifest.mf/Class-Path

• Java EE 库– 将可重用模块部署为库

– 在部署描述文件中引用库(名称、版本)

Page 45: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

共享库的最佳实践

• 系统类路径– 需要对所有/许多应用程序可见

– 很少重新加载库

• 应用程序级– 不与任何其他应用程序共享库

– 需要重新加载库

• 部署的库– 需要在许多应用程序之间共享

– 库的演化不同于应用程序类

– 需要重新加载库

Page 46: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

应用程序共享的库

my-web-1.war

my-ejb-1.jar

my-web-3.war

App-1.ear

my-web-2.war

my-ejb-2.jar

App-2.ear

my-web-1.war

my-ejb-1.jar

App-1.ear

my-web-3.war

my-web-2.war

my-ejb-2.jar

App-2.ear

my-web-3.war

App-lib.ear

部署视图

运行时视图

Page 47: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

Web 应用程序共享的库

WEB-INF/web.xml

WEB-INF/lib/x.jar

foo.jsp

bar.jsp

webapp-1.war

WEB-INF/web.xml

WEB-INF/lib/y.jar

a.jsp

b.html

webapp-lib.war

WEB-INF/web.xml*

WEB-INF/lib/x.jar

WEB-INF/lib/y.jar

foo.jsp

bar.jsp

a.jsp

b.html

webapp-1.war

部署

视图

运行时视

Page 48: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

过滤类加载器

• 支持首先从应用程序提供的库加载类– 首先将委托模式由父类更改为子类

– 作为阻止父类提供类的障碍

– 本身不加载类

• 在应用程序需要使用绑定到服务器的框架的其他版本时很有用– Xerces、Spring、Ant、Commons-Logging 等

Page 49: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

模块加载器

模块加载器

模块加载器 ...

应用程序(EAR 应用程序和 EAR 库类)

过滤(过滤列表障碍)

• 过滤类加载器位于应用程序类加载器和系统类加载器之间

• 本身不加载类

• 如果类与过滤列表相匹配,则阻止系统对它们进行加载

• 从父类返回ClassNotFoundException以便子类承担加载任务

系统加载器

过滤类加载器层次结构

Page 50: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

过滤类加载器配置

• 在应用程序级部署描述文件中指定了从应用程序加载的包

<weblogic-application>

...

<prefer-application-packages>

<package-name>org.apache.xerces.*</package-name>

<package-name>org.apache.commons.*</package-name>

<package-name>org.apache.log4j.*</package-name>

</prefer-application-packages>

...

</weblogic-application>

Page 51: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

10 应用程序日志记录

Page 52: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

使用 java.util.logging 的应用程序

• 使用 java.util.logging 的应用程序级日志记录已得到广泛采用– 可以配置标准的处理程序来从命令行对它们进行处理

– -Djava.util.logging.config.file

• WebLogic Server 不会自动处理来自应用程序记录器的日志消息– WebLogic Server 创建自身的根级记录器

• 要定向应用程序日志,需要构造一个自定义的处理程序– 关联到 WLS 服务器记录器和日志消息

Page 53: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

WLS 的 Java 日志记录处理程序

package sab.demo.fastswap.logging;

import java.util.logging.*;

public class WLSServerHandler extends Handler {

final Logger wlsLogger = weblogic.logging.LoggingHelper.getServerLogger();

@Override

public synchronized void setLevel(java.util.logging.Level newLevel) throws SecurityException {

super.setLevel(newLevel);

}

@Override

public void publish(LogRecord record) {

// Push record into WLS Server Logger

wlsLogger.log(record);

}

}

Page 54: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

配置日志记录处理程序

• 在 logging.properties 文件中配置日志记录属性

handlers=sab.demo.fastswap.logging.WLSServerHandler

sab.demo.fastswap.logging.WLSServerHandler.level=FINER

TestServlet.level=FINER

CalculatorBean.level=FINER

set JAVA_OPTIONS=%JAVA_OPTIONS% -Djava.util.logging.config.file=d:\bea\user_projects\domians\research\wls-logging.properties

在 setDomainEnv.cmd 中指定 logging.properties 文件

Page 55: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

控制台日志浏览器

• 日志消息写入到 server.log 域

• 在控制台跟踪或查看日志文件

Page 56: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

#11 利用 Oracle

Coherence*Web

Page 57: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

Coherence*Web 是什么?

• Coherence*Web 是一个 HTTP 会话管理模块

• 完全替代原生容器会话管理

• 提供多种会话模型以优化 HTTP 会话检索

• 利用行业领先的数据网格解决方案 Oracle Coherence

• http://coherence.oracle.com/display/COH35UG/Coher

ence*Web+and+WebLogic+Server

Page 58: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

为什么使用 Coherence*Web

• 从 Web 容器分离会话管理

• 应用程序能够支持更多的用户而无需添加更多应用服务器

• 重启/维护应用程序/容器时不会丢失会话

• 能够处理非常大的会话

• 高负载情况下仍可保持会话数据一致

• 避免了 HTTP 会话大小限制

• 允许不同环境中的 EAR/WAR 共享 HTTP 会话

• 无需修改代码

Page 59: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

部署模型 — 进程外部署

Page 60: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

会话模型 — 传统

Page 61: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

会话模型 — 整体

Page 62: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

会话模型 — 分割

Page 63: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

总结

• WebLogic Server 给开发人员带来许多方便

• 使用 FastSwap 可以极大地缩短开发和测试周期

• 与 Ant 构建环境的简便集成

• 可重复的开发和测试环境创建

• 高级且高度可配置的类加载器选项

Page 64: 在此处插入图片 - Oracle · JCA 1.5 √ JNDI 1.2 √ JMS 1.1 √ JAX-WS 2.0 √ EJB 3.0 √ Servlet 2.5 √ JSF 1.2 √ JSP 2.1 √ Java EE 5.0 APIs 支持 JDBC 3.0 √ •

更多资源

http://download.oracle.com/docs/cd/E12839_01/web.1111/e14529/developing_applicatio

ns.htm (开发概述)

http://download.oracle.com/docs/cd/E12839_01/web.1111/e13706/toc.htm (开发主题)

http://download.oracle.com/docs/cd/E12839_01/web.1111/e13715/toc.htm (WLST)

http://download.oracle.com/docs/cd/E12839_01/web.1111/e13702/toc.htm (部署概述)