关于 XML standalone 的解释

XML standalone 定义了外部定义的 DTD 文件的存在性. standalone element 有效值是 yesno. 如下是一个例子:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE s1 PUBLIC "http://www.ibm.com/example.dtd" "example.dtd">
<s1>.........</s1>

no 表示这个 XML 文档不是独立的而是依赖于外部所定义的一个 DTD.  值 yes 表示这个 XML 文档是自包含的(self-contained).

By javafuns on March 2, 2009 at 21:09 · Views: 1,706 · Permalink · Leave a comment
Categorized in: Java, SOA · Tagged with: ,

Java 程序中如何对 XML 文档进行验证?

Table Of Content

Introduction

Validation when parsing

Validation against preparsed schema

Validate a DOMSource or SAXSource against preparsed schema

Introduction

XML 作为一种数据存储和描述语言,这些年得到了广泛运用,尤其以web服务为代表。XML之所以广受欢迎,原因之一是它具有丰富的数据描述手段,你甚至可以对要存储的数据做出各种限制: 字符串长度,数字大小,等等。

最早的XML使用DTD(Document Type Definition)进行定义,后来人们又发明了XML Schema。XML Schema本质上也是一种XML,这相比DTD大大减少了学习曲线,而且XML Schema提供了更丰富的校验机制。

参看《XML Schema 与 XML DTD 的技术比较与分析》,有更详细的比较。

Read more »

By javafuns on March 1, 2009 at 21:39 · Views: 416 · Permalink · Leave a comment
Categorized in: Java, SOA · Tagged with: , ,

Dynamic Proxy Classes

本文翻译自 Java SE 6 Technotes -《Dynamic Proxy Classes》, 少部分内容取自 Java SE API 中文版.

Table Of Contents

Introduction
Dynamic Proxy API
Serialization
Examples

Introduction

一个动态代理类(dynamic proxy class)是实现了一组在运行期指定的接口的类, 通过已实现接口中的某个接口而对代理类某实例的方法调用将被编码并分派给另一个具有同一接口的对象上(a method invocation through one of the interfaces on an instance of the class will be encoded and dispatched to another object through a uniform interface). 因此, 一个动态代理类可用于为一组接口创建类型安全的代理对象而不需预先(例如使用编译期工具)生成这些代理类. 对一个动态代理类的某个实例进行方法调用会被分派给该实例调用处理器(invocation handler)中的某一方法, 且这些调用会以一个 java.lang.reflect.Method 对象(标识要调用的这些方法)和一个类型为 Object 的数组(包含方法参数信息)进行编码.

对于那些需要提供对(实现接口的)对象的调用进行安全的反射分派(type-safe reflective dispatch of invocations on objects)的应用程序或者库来说, 动态代理类是非常有用的. 例如, 一个应用程序可以使用一个动态代理类去创建一个实现多个任意(继承自java.util.EventListener)事件监听器接口的对象, 以一种统一风格去处理各种各样的不同类型事件, 例如将所有这样的事件记录到一个文件中.

Dynamic Proxy Class API

一个动态代理类(dynamic proxy class) (以下简单引用为代理类(proxy class)) 是一个实现了一组在运行期间所指定的接口列表的类.
Read more »

By javafuns on February 24, 2009 at 22:30 · Views: 412 · Permalink · Leave a comment
Categorized in: Design Patterns, Java · Tagged with: ,

Java Scripting Programmer’s Guide

Java 6 引入了 script 功能, 使得很多 script language 可以运行于 Java VM 中. 这会给我们的很多应用带来很有趣又很有用的特性, 比如将一些(需动态改变的)业务逻辑交给这些 script language 来处理. 本文翻译自 <Java Scripting Programmer’s Guide>.

———————————————————

Table Of  Content

Who is the Java Scripting API For?

脚本语言的一些有用特性有:

JavaTM Scripting API 是一个独立于脚本语言的框架, 用于在 Java 代码中使用脚本引擎. 通过使用 Java Scripting API, 使得通过 Java 语言编写 可定制的/可扩展的 应用程序成为可能, 终端用户可以自行选择用于定制目的的脚本语言. Java 应用程序开发人员在开发期间不需选择扩展语言. 如果你使用 JSR-223 API 编写你的程序, 那么你的用户就可以使用任何 JSR-223 兼容的脚本语言.

Read more »

By javafuns on February 23, 2009 at 09:57 · Views: 1,510 · Permalink · Leave a comment
Categorized in: Java · Tagged with: ,

使用 netbeans 6.5 创建 firefox 扩展

今天偶然在 Sun 中国网站上发现这样一篇文章, 介绍如何使用 netbeans 及其插件开发 firefox 及其它 Mozilla 程序的 addons. 文章写得很简短、很清楚.

该 Netbeans 插件叫做 foxbeans, 可从 http://plugins.netbeans.org/ 找到

使用 NetBeans 开发 Firefox 插件

By javafuns on February 2, 2009 at 16:07 · Views: 1,007 · Permalink · Leave a comment
Categorized in: Java · Tagged with: , , , ,

探讨JAR文件无限可能性(转载)

所有Java开发者都知道JAR文件只是包含Java类树的压缩(ZIP)文件。但是,不是人人(包括一些经验丰富的开发者)了解这种文件格式的其它优点。在本文中,我将简单介绍JAR文件格式,并说明利用它可以实现的各种可能性。

JAR文件简介

JAR文件以流行的二进制ZIP文件格式为基础,用以把许多文件合并成一个文件。它还包含一个名为META-INF的可选目录,这个目录位于文件根目录下。

有两种方法可以建立JAR文件:应用命令行工具jar,或使用Java中的java.util.jar API编程。如果JAR文件包含在Java类路径中,使JVM可看到它,则JAR文件包含Java类和/或可由类加载器运行、使用及加载的资源。

在许多情况下,JAR文件不仅仅是简单的Java类档案文件和/或资源;它们还可用来为应用程序和扩展建立语句块。META-INF目录(如存在)用于存储数据包和扩展配置数据,包括安全、版本、扩展和服务。

META-INF目录的作用

META-INF目录中的下列文件和目录获得Java 2平台的认可与解释,用来配置应用程序、扩展程序、类加载器和服务:

下面我们来了解一下每种组合。

Read more »

By javafuns on January 22, 2009 at 16:01 · Views: 582 · Permalink · Leave a comment
Categorized in: Java · Tagged with: 

也谈谈 JAAS

JAAS (Java Authentication and Authorization Service) 自 J2SDK 1.3 以可选的扩展包方式引入, 而到了 J2SDK 1.4 则完全集成进来.

JAAS 主要有两种用途:

  1. 认证用户: 确认用户是谁.
  2. 授权用户: 决定用户具有哪些权限才能执行特定代码.

之前的 Java 沙箱(sandbox)完全是基于代码来源(codesource-based)进行访问控制, 显然与当前 RBAC (Role-Based Acess Control) 理念有差距. JAAS 在此基础上, 增强了授权方面的支持.

下面将从这两方面介绍 JAAS. 在这之前, 先介绍一些概念.

Subject

表示请求实体, 最常见的就是一个人. 每个 subject 都会有一个或多个身份标识, 即 principal. subject 也可能具有一些安全相关的属性, 即 credential.

Principals

标识 subject 的身份, 如 身份证, 保险号等.

Credentials

credential 并非 JAAS 核心类库的一部分, 任何 class 都可以作为 credetial.

一. Authentication

对于访问程序的请求者, 首先要做的就是验证这个人是可靠的、可信任的吗? JAAS 提供了一种可插拔的方式 (Pluggable Authentication Module,PAM) 来执行这种认证, 即使要增加新的验证模块, 也不需要更改现有程序, 要做的仅仅是将新的认证模块插入到 JAAS 安全体系中.

Read more »

By javafuns on January 19, 2009 at 22:03 · Views: 812 · Permalink · Leave a comment
Categorized in: Java · Tagged with: 

Reading – Java™ Servlet Specification Version 2.4 – Mapping Requests to Servlets

Use of URL Paths

当 Web container 接到请求后, 首先确定将这个请求 forward 给哪个 Web application. 首先确定这个 Web application 的 context path 与 request URL 开始部分相匹配. URL 中相匹配的部分就是 context path.
Web container 接下来必须定位由哪个 servlet 来处理这个 request, 使用如下描述的 path mapping 步骤. 用于映射到一个 servlet 的 path 是 request URL 减去 context path 和 path parameters. 下面的 URL path mapping rules 要按顺序进行. 第一个成功匹配的 servlet 将用于请求处理, 而不会继续进行匹配:

  1. container 会尝试将 request path 与 servlet path 进行精确匹配. 如果成功, 那么就选择这个 servlet.
  2. container 会递归尝试匹配最长路径前缀(path-prefix). 使用 ’/’ 作为路径分隔符, 每次去掉 path tree 上的一个路径, 进行匹配. 具有最长长度的那次匹配所选择的 servlet 用来处理请求.
  3. 如果 URL path 尾部包含一个 extension (e.g. .jsp), servlet container 会尝试匹配是否有这样的 servlet 用来处理带有这种扩展的请求.
  4. 如果前 3 步都没有 servlet 匹配成功, container 会尝试为该请求提供合适内容(the container will attempt to serve content appropriate for the resource requested). 如果为该 application 定义了 “default” servlet, 那么就会使用这个 servlet.

进行匹配时, container 必须对字符串进行大小写敏感比较.

Specification of Mappings

在 Web application 部署描述中, 可使用下面这些句法定义 mappings:

Implicit Mappings

如果 container 具有 JSP container, *.jsp 扩展用于映射 JSP, 允许 JSP pages 按需要执行. 这种映射叫做 implicit mapping. 如果 Web application 定义了一个 *.jsp mapping, 这个 mapping 优先于 implicit mapping.
servlet container 也可做其它 implicit mappings, 只要能让 explicit mappings 优先即可.

By javafuns on January 10, 2009 at 22:08 · Views: 763 · Permalink · One Comment
Categorized in: Java · Tagged with: ,
  • Highest Rated

  • My PicasaPhotos

    IMG_0593.JPG

    IMG_0866.JPG

    IMG_0519.JPG

  • RSS My del.icio.us

  • My RSS