<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>vieri122</title>
    <description></description>
    <link>http://vieri122.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
          <item>
        <title>Java中的技术名称</title>
        <author>vieri122</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://vieri122.javaeye.com">vieri122</a>&nbsp;
                    链接：<a href="http://vieri122.javaeye.com/blog/179848" style="color:red;">http://vieri122.javaeye.com/blog/179848</a>&nbsp;
          发表时间: 2008年04月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Java SE 中的技术：<br />◆ JavaBeans Component Architecture 是一个为 Java 平台定义可重用软件组件的框架，可以在图形化构建工具中设计这些组件。<br />◆ Java Foundation Classes（Swing）（JFC）是一套 Java 类库，支持为基于 Java 的客户机应用程序构建 GUI 和图形化功能。<br />◆ JavaHelp 是一个独立于平台的可扩展的帮助系统，开发人员和作者可以使用它将在线帮助集成到 applet、组件、应用程序、操作系统和设备中，还可以提供基于 Web 的在线文档。<br />◆ Java Native Interface（JNI）使 JVM 中运行的 Java 代码可以与用其他编程语言编写的应用程序和库进行互操作。<br />◆ Java Platform Debugger Architecture（JPDA）是用于 Java SE 的调试支持基础结构。<br />◆ Java 2D API 是一套用于高级 2D 图形和图像的类（为图像组合和 alpha 通道图像提供丰富的支持）、一套提供精确的颜色空间定义和转换的类以及一套面向显示的图像操作符。<br />◆ Java Web start 允许用户通过一次点击下载并启动特性完整的应用程序（比如电子表格），而不需要进行安装，从而简化 Java 应用程序的部署。<br />◆ Certification Path API 提供了一套用于创建、构建和检验认证路径（也称为 “认证链”）的 API，可以安全地建立公共密钥到主体的映射。<br />◆ Java Database Connectivity（JDBC）是一个 API，它使用户能够从 Java 代码中访问大多数表格式数据源，提供了对许多 SQL 数据库的跨 DBMS 连接能力，并可以访问其他表格式数据源，比如电子表格或平面文件。<br />◆ Java Advanced Imaging（JAI）是一个 API，它提供一套面向对象的接口，这些接口支持一个简单的高级编程模型，使开发人员能够轻松地操作图像。<br />◆ Java Authentication and Authorization Service（JAAS）是一个包，它实现了标准的 Pluggable Authentication Module（PAM）框架的 Java 版本并支持基于用户的授权，使服务能够对用户进行身份验证和访问控制。<br />◆ Java Cryptography Extension（JCE）是一组包，它们提供用于加密、密钥生成和协商以及 Message Authentication Code（MAC）算法的框架和实现。它提供对对称、不对称、块和流密码的加密支持，它还支持安全流和密封的对象。<br />◆ Java Data Objects（JDO）是一种基于标准接口的持久化 Java 模型抽象，使程序员能够将 Java 领域模型实例直接存储进持久化存储（数据库）中，这可以替代直接文件 I/O、串行化、JDBC 以及 EJB Bean Managed Persistence（BMP）或 Container Managed Persistence（CMP）实体 bean 等方法。<br />◆ Java Management Extensions（JMX）提供了用于构建分布式、基于 Web、模块化且动态的应用程序的工具，这些应用程序可以用来管理和监视设备、应用程序和服务驱动的网络。<br />◆ Java Media Framework（JMF）可以将音频、视频和其他基于时间的媒体添加到 Java 应用程序和 applet 中。<br />◆ Java Naming and Directory Interface（JNDI）为 Java 应用程序提供一个连接到企业中的多个命名和目录服务的统一接口，可以无缝地连接结构不同的企业命名和目录服务。<br />◆ Java Secure Socket Extensions（JSSE）是一组包，它们支持安全的互联网通信，实现了 SSL（Secure Sockets Layer）和 TLS（Transport Layer Security）的 Java 版本，包含数据加密、服务器身份验证、消息完整性和可选的客户机身份验证等功能。<br />◆ Java Speech API（JSAPI）包含 Grammar Format（JSGF）和 Markup Language（JSML）规范，使 Java 应用程序能够将语音技术集成到用户界面中。JSAPI 定义一个跨平台的 API，支持命令和控制识别器、听写系统和语音识别器。<br />◆ Java 3D 是一个 API，它提供一套面向对象的接口，这些接口支持一个简单的高级编程模型，开发人员可以使用这个 API 轻松地将可伸缩的独立于平台的 3D 图形集成到 Java 应用程序中。<br />◆ Metadata Facility 允许给类、接口、字段和方法标上特定的属性，从而使开发工具、部署工具和运行时库能够以特殊方式处理它们。<br />◆ Java Content Repository API 是一个用于访问 Java SE 中独立于实现的内容存储库的 API。内容存储库是一个高级信息管理系统，它是传统数据存储库的超集。<br />◆ Enumerations（枚举） 是一种类型，允许以类型安全的方式将特定的数据表示为常量。<br />◆ Generics（泛型） 允许定义具有抽象类型的参数的类，可以在实例化时指定这些参数。<br />◆ Concurrency Utilities 是一套中级实用程序，提供了并发程序中常用的功能。<br />◆ Java API for XML Processing（JAXP）允许 Java 应用程序独立于特定的 XML 处理实现对 XML 文档进行解析和转换，允许灵活地在 XML 处理程序之间进行切换，而不需要修改应用程序代码。Java API for XML Binding（JAXB）允许在 XML 文档和 Java 对象之间进行自动的映射。<br />◆ SOAP with Attachments API for Java（SAAJ）使开发人员能够按照 SOAP 1.1 规范和 SOAP with Attachments note 生成和消费消息。<br /><br />J2EE 中的技术：<br />◆ Enterprise JavaBeans（EJB）技术使用一个组件模型来简化中间件应用程序的开发，它提供了对事务、安全性和数据库连接等服务的自动支持。<br />◆ Portlet Specification 定义了一套用于 Java 门户计算的 API，可以解决聚合、个人化、表示和安全性方面的问题。<br />◆ JavaMail 是一个 API，提供了一套对邮件系统进行建模的抽象类。<br />◆ Java Message Service（JMS）是一个 API，它为所有与 JMS 技术兼容的消息传递系统定义一套通用的消息概念和编程策略，从而支持开发可移植的基于消息的 Java 应用程序。<br />◆ JavaServer Faces（JSF）提供一个编程模型，帮助开发人员将可重用 UI 组件组合在页面中，将这些组件连接到应用程序数据源，将客户机生成的事件连接到服务器端事件处理程序，从而轻松地组建 Web 应用程序。<br />◆ JavaServer Pages（JSP）允许 Web 开发人员快速地开发和轻松地维护动态的独立于平台的 Web 页面，并将用户界面和内容生成隔离开，这样设计人员就能够修改页面布局而不必修改动态内容。这种技术使用类似 XML 的标记来封装为页面生成内容的逻辑。<br />◆ Standard Tag Library for JavaServer Pages（JSTL）是一个定制标记集合，它以一种标准化的格式启用许多常见的 Web 站点功能。<br />◆ Java Servlets 提供一种基于组件的独立于平台的方法，可以构建基于 Web 的应用程序，同时避免 CGI 程序的性能限制，从而扩展并增强 Web 服务器的功能。<br />◆ J2EE Connector Architecture（JCA）为将 J2EE 平台连接到各种结构的 Enterprise Information Systems（EIS）定义了一个标准的体系结构，它定义了一套可伸缩的安全的事务性机制，使 EIS 厂商能够提供标准的资源适配器，可以将这些资源适配器插入应用服务器中。<br />◆ J2EE Management Specification（JMX）为 J2EE 平台定义了一个信息管理模型。根据其设计，J2EE Management Model 可与多种管理系统和协议进行互操作；包含模型到 Common Information Model（CIM）的标准映射，CIM 是一个 SNMP Management Information Base（MIB）；还可以通过一个驻留在服务器上的 EJB 组件 —— J2EE Management EJB Component（MEJB） —— 映射到 Java 对象模型。<br />◆ Java Transaction API（JTA）是一个独立于实现和协议的高级 API，它使应用程序和应用服务器可以访问事务。Java Transaction Service（JTS）指定了 Transaction Manager 的实现，它支持 JTA 并在这个 API 之下的层上实现 OMG Object Transaction Service（OTS） 1.1 规范的 Java 映射。JTS 使用 Internet Inter-ORB Protocol（IIOP）传播事务。<br /><br />J2ME 中的技术：<br />◆ Connected Limited Device Configuration（CLDC）是组成资源有限的移动信息设备的 Java 运行时环境的两种配置之一。CLDC 描述最基本的库和虚拟机特性，所有包含 K 虚拟机（K virtual machine，KVM）的 J2ME 环境实现中都必须提供这些库和特性。<br />◆ Mobile Information Device Profile（MIDP）是组成资源有限的移动信息设备的 Java 运行时环境的两种配置之一。MIDP 提供核心应用程序功能，包括用户界面、网络连接、本地数据存储和应用程序生命周期管理。<br />◆ Connected Device Configuration（CDC）是一个基于标准的框架，用来构建和交付可以跨许多连接网络的消费类设备和嵌入式设备共享的应用程序。<br />◆ Mobile 3D Graphics API for J2ME（M3G）是一种轻量的交互式 3D 图形 API，它作为可选的包与 J2ME 和 MIDP 结合使用。
          <br/>
          <span style="color:red;">
            <a href="http://vieri122.javaeye.com/blog/179848#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 06 Apr 2008 15:32:48 +0800</pubDate>
        <link>http://vieri122.javaeye.com/blog/179848</link>
        <guid>http://vieri122.javaeye.com/blog/179848</guid>
      </item>
          <item>
        <title>JSF应用中捕捉managed-bean构造方法里抛出的异常</title>
        <author>vieri122</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://vieri122.javaeye.com">vieri122</a>&nbsp;
                    链接：<a href="http://vieri122.javaeye.com/blog/168896" style="color:red;">http://vieri122.javaeye.com/blog/168896</a>&nbsp;
          发表时间: 2008年03月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <h2><span>有时候需要在managed-bean的构造方法里执行一些逻辑代码，这时如果抛出了异常，该如何捕捉呢？</span></h2><div id="fileContent"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JSF的事件被执行时，如果在事件处理方法中抛出了Exception，我们可以通过JSF提供的ActionListener机制catch到抛出的Exception，然后根据Exception类型执行不同的错误处理。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp; 但有时候需要在managed-bean的构造方法里执行一些逻辑代码，这时如果抛出了异常，该如何捕捉呢？<br />你可能会想到在Filter里加以捕捉处理，但不幸的是，你在Filter里只能捕捉到经过被加工了的Exception：ServletException，而且你也没办法将其还原成最初被抛出的Exception。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp; 要达到这个目的，我们可以利用JSF框架提供的variable-resolver切入点。因为JSF的managed-bean的instance，就是由variable-resolver所定义类所生成的。<br />所以我们可以借助JSF提供的机制，注册我们自己的variable-resolver类，从而就可以捕捉到managed-bean构造方法执行时抛出的异常了。<br /><br />具体方法为：<br />&nbsp;&nbsp;&nbsp;&nbsp; 自定义一个VariableResolverImpl类，该类需要实现虚类javax.faces.el.VariableResolver，为了简便起见，我们可以根据情况，重载所使用的JSF实现里的相关类就可以了，比如MyFaces的情况下，重载org.apache.myfaces.el.VariableResolverImpl. resolveVariable方法就可以了。</div><div id="fileContent">代码如下： <br /></div><div id="fileContent"><pre name="code" class="java">package mypackage;

import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;

public class VariableResolverImpl extends
        org.apache.myfaces.el.VariableResolverImpl {
    private static final String ERROR_FLAG = &quot;error&quot;;
    private static final String EXCEPTION_TYPE = &quot;exception&quot;;
    
    @Override
    public Object resolveVariable(FacesContext facesContext, String name) {
        try {
            return super.resolveVariable(facesContext, name);
        } catch (Throwable e) {
            HttpServletRequest request = (HttpServletRequest)facesContext.getExternalContext().getRequest();
            
            request.setAttribute(ERROR_FLAG, Boolean.TRUE);
            request.setAttribute(EXCEPTION_TYPE, e);
            
            throw new RuntimeException(e);
        }
    }
    
}</pre></div><div id="fileContent">&nbsp; 在faces-config.xml里注册刚才实现的类，让JSF使用我们提供的类解析变量</div><div id="fileContent"><pre name="code" class="java">&lt;faces-config&gt;
&lt;!--  Application Config --&gt;
&lt;application&gt;
  &lt;variable-resolver&gt;mypackage.VariableResolverImpl&lt;/variable-resolver&gt;
  &lt;!-- other configuration here --&gt;
&lt;/application&gt;

&lt;!-- other configuration here --&gt;

&lt;/faces-config&gt;</pre></div><div id="fileContent">在其他地方处理异常，比如Filter里</div><div id="fileContent"><pre name="code" class="java">public class AppFilter implements Filter {
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,
            ServletException {

        try {
            chain.doFilter(request, response);
        } catch (ServletException e) {
            
            Boolean error =  (Boolean)request.getAttribute(&quot;error&quot;);
            if (Boolean.TRUE.equals(error)) {
                Throwable te = (Throwable)request.getAttribute(&quot;exception&quot;);
                
                if (te instanceof AppException) {
                    //TODO do business here
                    
                } else {
                    //TODO do business here
            }
            } else {
            //TODO do business here
        }

        }

}</pre>&nbsp; <br /></div>
          <br/>
          <span style="color:red;">
            <a href="http://vieri122.javaeye.com/blog/168896#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 06 Mar 2008 22:30:19 +0800</pubDate>
        <link>http://vieri122.javaeye.com/blog/168896</link>
        <guid>http://vieri122.javaeye.com/blog/168896</guid>
      </item>
      </channel>
</rss>