WebSphere Application Server Community Edition V2.0 中的新特性

研究 IBM® WebSphere® Application Server Community Edition V2.0 中可用的新特性和新功能,包括新的部署计划、同时运行多个服务器实例的能力、最新改进的 Web 控制台、依赖关系注入、JAX-WS 支持,另外还有对 Java™ EE 5 全面支持的所有优点。了解这个主要发行版如何使得 WebSphere Application Server Community Edition 成为可供使用的、功能最强大的、免费的应用服务器。

Ashish Jain, 软件工程师, IBM

Author photoAshish Jain 是 IBM WebSphere Application Server Community Edition 的 Level 2 Technical Support 的一位软件工程师。他获得了 NITK Surathkal 的计算机科学工程学士学位,并于 2005 年作为 ELTP 加入 IBM。



2007 年 10 月 15 日

引言

IBM WebSphere Application Server Community Edition V2.0(以下称为 Community Edition)是一种 Java Platform, Enterprise Edition 5 (Java EE 5) 认证的应用服务器,它包含用于数据库 (Apache Derby)、消息传递服务 (Active MQ) 和目录服务器 (LDAP) 的集成组件。它是在 GBeans 体系结构的基础上进行的开发,核心是 Apache Geronimo 2.0,可伸缩性、模块性、可移植性和自定义能力等等特性使得 Community Edition 成为了可供使用的、功能最强大的应用服务器之一。

作为 WebSphere 系列产品中的一部分,Community Edition 可以与其他 IBM 产品(如 IBM Rational® Application Developer 和 WebSphere MQ)进行集成,并提供了向其他 WebSphere Application Server 产品迁移的路径。

Community Edition 与下面的产品进行了捆绑:

  • IBM SDK, Java 2 Technology Edition
  • 用于 Apache Derby 和 IBM DB2®的 JDBC 驱动程序
  • 支持 Apache Derby、IBM DB2、Oracle®、Microsoft® SQL Server、MySql 的数据库连接器
  • 支持 Apache Directory Server、IBM Tivoli® Directory Server、MS Active Directory、OpenLDAP Server 和 Sun™ ONE Directory Server 的目录

新的内容

WebSphere Application Server Community Edition 的最新版本经过了 Java EE 5 的认证,并且包含对 Java EE 5 的全面支持。此外,这个发行版还包括许多新的特性和重要的增强功能,具体包括:

  1. 增强的 Web 控制台
  2. 配置替换属性
  3. 一台服务器,多个存储库
  4. 多个服务器实例
  5. 多个服务器实例,每个都有它自己的存储库
  6. 简化的部署
  7. 注释
  8. Eclipse 插件和 Eclipse V3.3
  9. JAX-WS 工具
  10. 经过更新的示例应用程序

在接下来的几个部分中,将对这些特性进行描述。

所支持的规范

为了供您参考,下面的表格列出了 Community Edition V2.0 所支持的各种规范:

表 1. Web 应用程序技术
规范版本JSR 编号对 J2EE 1.4 所做的更改
ServletServlet 2.5JSR 154对 Servlet 2.4 所做的维护更新
Java Server PagesJSP 2.1JSR 245对 JSP 2.0 进行的更新
JSP DebugJSP Debug 1.0JSR 45Java EE 5.0 中的新特性
Java Server FacesJSF 1.2JSR 252Java EE 5.0 中的新特性
Java Server Pages 标准标记库JSTL 1.2JSR 52Java EE 5.0 中的新特性
表 2. 企业应用程序技术
规范版本JSR 编号对 J2EE 1.4 所做的更改
JavaBeans Activation FrameworkJAF 1.1JSR 925对 JAF 1.0 所做的维护更新
JavaMailJavaMail 1.4JSR 919对 JavaMail 1.3 所做的维护更新
Java Persistence APIJPA 1.0JSR 220Java EE 5.0 中的新特性
Java Transactions APIJTA 1.1JSR 907对 JTA 1.0 所做的维护更新
Java Authorization Contract for ContainersJACC 1.1JSR 115对 JACC 1.0 所做的维护更新
Common Annotations for the Java PlatformAnnotations 1.0JSR 250Java EE 5.0 中的新特性
Enterprise JavaBeansEJB 3.0JSR 220对 EJB 2.1 进行的更新
表 3. 管理规范
规范版本JSR 编号对 J2EE 1.4 所做的更改
Java EE ManagementJava EE Mgmt 1.1JSR 77对 Mgmt 1.0 所做的维护更新
Java EE Application DeploymentApp Deploy 1.2JSR 88对 App Deploy 1.1 所做的维护更新
表 4. Web 服务 - Axis2
规范版本JSR 编号对 J2EE 1.4 所做的更改
Implementing Web ServicesWSEE 1.2JSR 109对 WSEE 1.1 所做的维护更新
Java API for XML-Based Web ServicesJAX-WS 2.0JSR 224Java EE 5.0 中的新特性
Java Architecture for XML BindingJAXB 2.0JSR 222Java EE 5.0 中的新特性
Web Service Metadata for the Java platformWS Metadata 2.0JSR 181Java EE 5.0 中的新特性
SOAP with Attachments APISAAJ 1.3JSR 67对 SAAJ 1.2 所做的维护更新
Streaming API for XMLSTAX 1.0JSR 173Java EE 5.0 中的新特性
表 5. Web 服务 - CXF
规范版本JSR 编号对 J2EE 1.4 所做的更改
Implementing Web ServicesWSEE 1.2JSR 109对 WSEE 1.1 所做的维护更新
Java API for XML-Based Web ServicesJAX-WS 2.0JSR 224Java EE 5.0 中的新特性
Java Architecture for XML BindingJAXB 2.0JSR 222Java EE 5.0 中的新特性
Web Service Metadata for the Java platformWS Metadata 2.0JSR 181Java EE 5.0 中的新特性
SOAP with Attachments APISAAJ 1.3JSR 67对 SAAJ 1.2 所做的维护更新
Streaming API for XMLSTAX 1.0JSR 173Java EE 5.0 中的新特性

增强的 Web 控制台

为了简化故障诊断工作,Community Edition Web 控制台中新的 Debug Views Portlet 提供了各种视图,以便显示关于系统模块和用户定义模块的信息。其中包括用于 JMX、LDAP、ClassLoader、JNDI 和依赖关系的特定查看器,如图 1 所示。

图 1. 管理控制台中的 Debug View Portlet
图 1. 管理控制台中的 Debug View Portlet

下面将对这些独特的查看器进行相应的描述,它们分别显示了一个 DB2 数据库池(使用管理控制台部署到服务器上)的示例:

  1. JMX Viewer

    JMX Viewer 采用树型表示法显示了不同类型的 MBean。每个 MBean 使用对象名称表示法来表示一个树节点。JMX Viewer 可以显示下列内容:

    • 所有的 MBean
    • 由 J2EE™ 管理的对象
    • Geronimo MBean
    • ServiceModule MBean
    • 统计信息提供者 MBean
    • 搜索 MBean

    展开这些种类中的任何一个都将显示一个对象列表,选择一个对象将显示其属性、统计信息,以及可以在该对象上执行的操作。该 Portlet 还提供了搜索的特性,它接受对象名称模式 (Object Name Pattern) 作为键。下面提供了一些键的示例:

    • geronimo:* 显示所有以“Geronimo:”开头的 MBean
    • geronimo.config:* 显示所有以“geronimo.config:”开头的 MBean
    • *:j2eeType=StatelessSessionBean,* 显示所有类型为 StatelessSessionBean 的 MBean

    要使用 JMX Viewer(可以考虑前面的数据库池示例)查看相关的诊断信息,需要执行以下操作:

    1. 从管理控制台启动 JMX Viewer
    2. 展开 J2EE Managed Objects => JCAManagedConnectionFactory
    3. 选择数据库池示例的条目。
    4. 右边的面板显示了对象的AttributesInfoStats,以及可以对该对象执行的Operations,如相应的选项卡中所列出的内容(图 2)。
      图 2. 数据库池示例的 JMX Viewer
      图 2. 数据库池示例的 JMX Viewer
  2. LDAP Viewer

    应用服务器在基于文件、数据库或者轻量级目录访问协议(Lightweight Directory Access Protocol,LDAP)的存储库中存储有关用户的信息。LDAP 存储了企业中所有应用程序都可以访问的信息。LDAP Viewer 可以帮助您连接到任何 LDAP 服务器,并浏览它的内容(用于只读访问)。Community Edition 与 IBM Tivoli Directory Server、Microsoft Active Directory 2000、OpenLDAP Server 和 Sun ONE Directory Server 都是兼容的。在启动应用服务器之前,请确保您的目录服务器正常运行。

    要使用 LDAP Viewer,需要执行以下操作:

    1. 从管理控制台启动 LDAP Viewer
    2. 该查看器有两个面板:其中一个面板包含 ou(组织单元)的树型视图,另一个面板包含AttributesSearchConnect Info 选项卡。展开树 ou=system,该树表示了完整的组织范围(图 3)。
    3. 选择 uid=admin。右边面板中的 Attributes 选项卡显示了用户 admin 的相关属性。
    4. 选择 Search 选项卡,并如图 4 所示填写其中的表格。
    5. Connect Info 选项卡显示了 LDAP 服务器的连接信息。
      图 3. 管理控制台中的 LDAP Viewer
      图 3. 管理控制台中的 LDAP Viewer
      图 4. 在 LDAP Viewer 中进行搜索
      图 4. 在 LDAP Viewer 中进行搜索
  3. ClassLoader Viewer

    ClassLoader 是基于 Java 的系统(在运行时发现并加载 Java 类的系统)中的一个组件。ClassLoader Viewer 显示了已经定义的类加载器、它们之间的关系,以及分别加载的类。该查看器具有两个选项:Search 和 Invert Tree。

    在缺省情况下,ClassLoader Viewer 采用父-子的形式显示 ClassLoader。父类加载器是 sun.misc.Launcher$ExtClassLoader@6fbc6fbc。选择 Invert Tree,可以将该视图更改为子-父的形式。扩展类加载器 sun.misc.Launcher$ExtClassLoader@6fbc6fbc 是引导类加载器 (bootstrap classloader) 的子类加载器。

    要使用 ClassLoader Viewer(可以考虑前面的数据库池示例),需要执行以下操作:

    1. 从管理控制台启动 ClassLoader Viewer
    2. 选择 Invert Tree
    3. 选择数据库池示例的条目,并展开所有的树节点。该查看器显示了为数据库池示例加载的所有类。
      图 5. 数据库池示例的 ClassLoader Viewer
      图 5. 数据库池示例的 ClassLoader Viewer
  4. JNDI Viewer

    JNDI (Java Naming and Directory Interface) 是一个用于按名称查找数据和对象(如数据源、EJB 组件等等)的目录接口 API。JNDI Viewer 建立于相同的功能之上,为各种模块显示 JNDI 上下文。

    要使用 JNDI Viewer,需要执行以下操作:

    1. 部署一个应用程序,如 geronimo-jsp-examples-2.0.war
    2. 从管理控制台启动 JNDI Viewer
    3. 展开 WebModule,然后是 org.apache.geronimo.applications.examples.geronimo-examples/geronimo-jsp-examples/2.0/war 文件。该查看器显示了各种模块的 JNDI 上下文。
      图 6. JNDI Viewer
      图 6. JNDI Viewer
  5. Dependency Viewer

    对于应用程序来说,与外部库(以 JAR 或者压缩的存档文件的形式)存在依赖关系是很常见的。通常,在服务器上运行的每个模块还将引用库或者其他模块。Dependency Viewer 显示所有已安装的、并正在该服务器中运行的模块的依赖关系视图。对于发现和解析重复的依赖关系、发现任何缺少的依赖关系来说,这些信息是非常有帮助的。

    要使用 Dependency Viewer(可以考虑前面的数据库池示例),需要执行以下操作:

    1. 从管理控制台启动 Dependency Viewer Portlet。
    2. 展开 Resource Adapter Module 树。
    3. 展开数据库池sample 的树。该查看器显示了 DB2 数据库池示例对 DB2 JAR 和系统模块的依赖关系。
      图 7. 数据库池示例的依赖关系视图
      图 7. 数据库池示例的依赖关系视图

配置替换属性

在 Community Edition V2.0 出现之前,要运行应用服务器的多个实例有些麻烦,因为需要对端口配置进行手工更改,以避免出现端口冲突。现在,运行多个服务器实例只需要执行一个步骤即可。在 Community Edition V2.0 中,config.xml 使用 $(a+b) 形式的表达式为各个模块计算端口编号。例如:

清单 1. 摘自 config.xml
<gbean name="RMIRegistry">
	<attribute name="port">${NamingPort + PortOffset}</attribute>
</gbean>

当在启动时对 config.xml 进行处理的时候,从 config-substitutions.properties 文件中获得 NamingPort 和 PortOffset 变量。可以在 <WASCE_HOME>/var/config/config-substitutions.properties 中找到这个文件。

清单 2. 摘自 config-substitutions.properties 文件
PortOffset=0
PlanServerHostname=0.0.0.0
PlanNamingPort=1099

RMIRegistry 将使用端口 1099 启动,因为在缺省情况下,portOffset=0。将其更改为 portOffset=10,RMIRegistry 将使用端口 1109 启动。类似地,其他模块都将使用端口号偏移量 10 来进行启动。

可以使用下面的命令改变 config-substitutions.properties 文件的文件名:

Dorg.apache.geronimo.config.substitutions.file=var/config/myconfig-file.properties

环境变量和系统属性将覆盖 config-substitutions.properties 文件中的值。


一台服务器,多个存储库

Community Edition V2.0 支持每个服务器实例使用多个存储库。当需要对数据进行物理分离时,这个特性就会非常方便。例如,运行大型应用程序的企业将发现这个特性非常有用,它们应该利用这个特性来更改存储库,而不会影响整个生产环境。

要创建多个存储库,需要执行以下操作:

  1. 创建一个计划 newrepo.xml。例如:
    清单 3. newrepo.xml 示例
    <?xml version="1.0" encoding="UTF-8"?>
    <module xmlns="http://geronimo.apache.org/xml/ns/deployment-1.2">
      <environment>
        <moduleId>
          <groupId>org.example.configs</groupId>
          <artifactId>samplerepository</artifactId>
          <version>2.0.1</version>
          <type>car</type>
        </moduleId>
        <dependencies>
          <dependency>
            <groupId>org.apache.geronimo.configs</groupId>
            <artifactId>j2ee-system</artifactId>
            <version>2.0.1</version>
            <type>car</type>
          </dependency>
       </dependencies>
        <hidden-classes/>
        <non-overridable-classes/>
    </environment>
      <!--Repository-->
      <gbean name="newRepo" 
      class="org.apache.geronimo.system.repository.Maven2Repository">
    <attribute name="resolveToServer">true</attribute>
        <reference name="ServerInfo">
          <name>ServerInfo</name>
        </reference>
      </gbean>
      <!--Configuration Store service-->
      <gbean name="Local2" class="org.apache.geronimo.system.configuration.
    RepositoryConfigurationStore">
        <reference name="Repository">
          <name>newRepo</name>
        </reference>
      </gbean>
    </module>

    resolveToServer 属性是一个布尔类型的值;如果为真,它会将新的存储库解析为服务器基础目录,反之如果为假,它会将新的存储库解析为服务器基础存储库。

  2. 为新的存储库 <WASCE_HOME>/newrepo 创建一个目录。这个目录必须与 Maven2Repository gbean 中的 root 属性所引用的内容相同。路径 newrepo/ 是相对于 Community Edition 的安装目录的。
  3. 通过运行这个命令来部署 newrepo.xml:

    deploy deploy newrepo.xml

该部署命令是脚本 <WASCE_HOME>/bin/deploy.bat(或者 deploy.sh,这取决于具体的操作系统)。可以从 <WASCE_HOME>/bin 目录中或者将该目录放到系统路径中,然后通过键入 deploy 调用它。这将完成该服务器的第二个存储库的创建。

要使用新的存储库,需要执行以下操作:

  1. 打开命令提示符(在 Windows 中)或者 Shell 提示符 (UNIX)。
  2. 运行下面的命令:

    deploy list-targets

  3. 显示该服务器中可用存储库的列表。
    清单 4. 可用的目标
    org.example.configs/samplerepository/2.0.1/car? ServiceModule= 
    org.example.configs/samplerepository/2.0.1/car,j2eeType
    =ConfigurationStore,name=Local2
    
    org.apache.geronimo.configs/j2ee-system/2.0.1/car?ServiceModule=
    org.apache.geronimo.configs/j2ee-system/2.0.1/car,j2eeType
    =Configuration Store,name=Local
  4. 要将一个应用程序部署到新的存储库,可以使用这个命令:

    deploy deploy --targets %NEWREPO% mysample.war

  5. 要从新的存储库取消一个应用程序的部署,可以使用这个命令:

    deploy undeploy "%NEWREPO%|default/mysample/2.0.1/war"

    请记住,仅支持通过命令行将一个应用程序部署到服务器的第二存储库。另外,如果在部署命令中没用使用 –target 属性,那么该应用程序将部署到所有存储库。


多个服务器实例

Community Edition V2.0 允许您运行来自一个安装目录的服务器的多个实例。从一个目录中运行多个实例具有以下几方面好处:

  • 这种方式的成本效率很高;而在多台计算机中维护多个服务器,可能需要多种昂贵的硬件和软件配置。
  • 对其中一个实例进行配置不会影响其他实例。
  • 您只需要安装一个服务器,就可以获得集群和负载平衡的优点,从而在某个实例崩溃或者挂起的情况下,改善可伸缩性,并确保高可用性。
  • 通过在服务器的多个实例之间明确地划分服务器资源,可以减少开销。

要从一个安装中创建服务器的多个实例,需要执行以下操作:

  1. 创建一个目录 <WASCE_HOME>/myserver(其中 myserver 是该服务器的第二实例)。
  2. 将 <WASCE_HOME>/var/* 复制到 <WASCE_HOME>/myserver/var。
  3. 编辑 myserver/var/config-substitution.properties,取消 portOffset 的注释,并将它的值改为 10
  4. 启动服务器。您可以使用下列三种方式的其中之一来完成这个任务:
    1. 打开命令提示符或者 Shell 提示符,然后按如下进行设置:

      GERONIMO_OPTS=-Dorg.apache.geronimo.server.name=myserver

      并运行:

      对于 Windows: <WASCE_HOME>/bin/startup.bat
      对于 UNIX: startup.sh

    2. 在 <WASCE_HOME>/bin/setenv.bat 中,将:

      @if "%JAVA_OPTS%" == "" set JAVA_OPTS=-Xms32m -Xmx256m

      更改为:

      if "%JAVA_OPTS%" == "" set JAVA_OPTS=-Xms32m -Xmx256m -Dorg.apache.geronimo.server.name=myserver

      并运行:

      对于 Windows: <WASCE_HOME>/bin/startup.bat
      对于 UNIX: startup.sh

    3. 将 -Dorg.apache.geronimo.server.name=myserver 传递到服务器的命令行调用。从 <WASCE_HOME>/bin 中,运行这个命令:

      java java -Dorg.apache.geronimo.server.name=myserver -Djava.endorsed.dirs=lib /endorsed -javaagent:bin/jpa.jar -jar bin/server.jar

  5. 在浏览器中启动管理控制台:

    http://localhost:8090/console


多个服务器实例,每个都有它自己的存储库

可以对 Community Edition V2.0 进行配置,以使得每个服务器实例都有它自己的存储库:

  1. 创建一个目录 <WASCE_HOME>/myserver,其中 myserver 是该服务器的第二实例。
  2. 将 <WASCE_HOME>/var/* 复制到 <WASCE_HOME>/myserver/var。
  3. 创建一个目录 <WASCE_HOME>/myserver/newrepo,其中 newrepo 是实例 myserver 的存储库。
  4. 在 newrepo.xml 中,将:

    <attribute name="root">newrepo/</attribute>

    更改为:

    <attribute name="root">myserver/newrepo/</attribute>.

  5. 编辑 myserver/var/config-substitution.properties 文件。取消 portOffset 行的注释,并将它的值更改为 10
  6. 启动服务器。
  7. 部署 newrepo.xml 运行这个命令:

    deploy --port 1109 deploy newrepo.xml

这个命令会在服务器的当前实例中部署 newrepo.xml 文件,并将新的存储库绑定到服务器的新实例。在该服务器的缺省实例中,以及该服务器的新实例中,都将出现新存储库的空间占用,但是它仅在新实例中运行。

要在服务器的新实例中部署一个应用程序,需要执行以下操作:

  1. 在浏览器中启动管理控制台。
  2. 选择 Deploy New,并部署一个示例应用程序,例如:mysample.war。该应用程序将部署到这两个实例中,但它仅在新实例中运行。
  3. 还可以使用下面的行命令部署应用程序:

    deploy deploy --targets %NEWREPO% mysample.war

    使用这个方法部署的应用程序将仅在新的存储库中存在空间占用。
  4. 要取消应用程序的部署,需要运行命令:

    deploy undeploy "%NEWREPO%|default/mysample/2.0.1/war"


简化的部署

Enterprise JavaBeans™ (EJB) 是用于开发企业应用程序的服务器端组件。随着不断发布的 EJB 规范,EJB 组件的开发变得越来越复杂,但是对于发行版 EJB 3.0,情况却发生了很大的变化。Community Edition V2.0 支持 EJB 3.0,而 EJB 3.0 使用元数据注释作为部署描述符的替代方法。

在 EJB 3.0 中,所有的 EJB 都是带有注释的传统 Java 对象(Plain Old Java Objects,POJO)。当使用 EJB 3.0 编写企业应用程序时,Community Edition 容器将在运行时自动地生成部署描述符。这消除了对 ejb-jar.xml 或者 open-ejb-jar.xml 文件的需要。(这并不意味着完全不需要使用 XML。如果您同时定义了注释和部署描述符,那么将会覆盖注释。)

图 8. 使用 Community Edition EJB 容器生成部署文件
图 8. 使用 Community Edition EJB 容器生成部署文件
清单 5. Community Edition V2.0 之前的 EJB 应用程序
|- SampleApplication.ear
   |- META-INF
      |- application.xml
      |- geronimo-application.xml
   |- SampleApplication.jar
      |- ejb-jar.xml
   |- SampleApplication.war
清单 6. Community Edition V2.0 中的 EJB 应用程序
|- SampleApplication.ear
   |- META-INF
      |- application.xml
      |- geronimo-application.xml
   |- SampleApplication.jar
   |- SampleApplication.war

注释

注释是作为 JSR-175 中的一部分而提供的一种新的语言特性。它是一种用于 Java 编程语言 (JPL) 的元数据工具,您可以采用某种方式在您的代码中进行注释,它将根据元数据信息改变 Web 容器的行为。以下是一个简单示例:

清单 7. 注释示例
@webService
public Class HelloWorld
{
	@webMethod
public String hellowworld()
{
return “Hello” ;
}
}

在这个示例中,@webService 注释类型将这个类标记为 Web 服务,而 @webMethod 将 hellowworld 方法标记为 webMethod。这意味着,使用注释,就可以不再需要标准的 web.xml 文件。Servlet 2.5 规范中声明,可以在某些 Web 组件(如 Servlet、筛选器、侦听器和标记处理程序)中定义注释。注释用于声明对外部资源的依赖关系。Web 容器将在这些组件中检测相关的注释,然后在开始组件的生命周期之前注入所需的依赖关系。注释可以作为要求容器执行某些 Servlet 任务的请求,否则它将自己执行。这也称为依赖关系注入。

可以与 Web 应用程序一起使用的其他注释包括 @Resource、@PostConstruct、@PreDestroy 和 @EJB。

使用这些注释的好处包括:

  • 部署描述符是可选的。
  • 您可以将更多注意力集中于业务逻辑。
  • 因为可以将对容器的请求放入到代码中,所以使得对部署描述符与代码进行同步的开销减到最小。例如,可以将一个类公开为 Web 服务。
  • 开发时间显著地减少。

Eclipse 插件和 Eclipse 3.3

Eclipse 插件提供了 Community Edition 和 Eclipse Web Tools Project (WTP) 之间的集成。您可以使用插件在 Eclipse 的 Community Edition 中开发、测试和调试应用程序。(即将推出的 Community Edition V2.0 的 Eclipse 插件将同样支持 Community Edition V1.1.0.x。)


JAX-WS 工具

当您使用 jaxws-tool 时,可以更容易地生成 Web 服务部署和调用所需的构件,jaxws-tool 的脚本可以在如下目录中找到:

  • Windows:<WASCE_HOME>/bin/jaxws-tool.bat
  • UNIX:<WASCE_HOME>/bin/jaxws-tool.sh

要生成在 JAX-WS Web 服务(请参见参考资料)中使用的 JAX-WS 构件,可以在启动或者停止服务器的时候调用这个命令:

jaxws-tools wsgen

如果没有使用 WSDL 部署服务,那么服务器将为项目的部署自动生成 WSDL,这意味着,不需要运行 wsgen 工具。

要从 WSDL URI 生成 JAX-WS 可移植的构件,可以使用这个命令:

jaxws-tools wsimport


经过更新的示例

新的和经过更新的示例应用程序(请参见参考资料)可以用于展示 Community Edition 的一些新的增强功能和 Java EE 5 特性,包括 Apache Geronimo 2.0 提供的一些应用程序和 Community Edition 特有的一些应用程序。每个示例都包括源代码和预先构建的可安装文件,以及一个 README.txt 文件(在每个示例的子目录中),并提供了相应的指令以帮助您使用它们。

示例分发版中的应用程序包括:

  • calculator-stateless-pojo:展示了 OpenEJB 3.0.0 在服务器中提供的 EJB 3.0 支持。该应用程序包括一个无状态会话 Bean,由一个简单的 Web 客户端使用。
  • cviewer:Web 应用程序由一个调用 Servlet 的 JSP 文件组成。它为用户提供一个表单,让其输入完全限定的类名称。表单提交后,该 Servlet 将检查该类名称并将结果返回给用户。
  • daytrader:模拟股票交易的实际情况,允许您查看您的投资组合、获得报价以及买卖股票。部署工作通过 EAR 文件实现。
  • dbdemo1:在 Derby 数据库中访问 Community Edition_USERS 表的 Web 应用程序。
  • EMPdemo:显示如何访问 Derby 数据库,以及如何配置对外部(Oracle 或者 MicroSoft SQL)数据库的访问。部署工作通过 WAR 文件实现。
  • file-realm-demo:展示如何使用用户和组的平面文件设置安全约束。
  • geronimo-jsp-examples:Apache Tomcat 提供的 JSP 示例应用程序。
  • geronimo-Servlet-examples:Apache Tomcat 提供的 Servlet 示例应用程序。
  • hello:简单的“hello”JSP Web 应用程序。
  • jaxws-calculator:展示如何在服务器中使用 Axis2 1.3 提供的 JAX-WS 支持。
  • jpa:展示如何在服务器中使用 OpenJPA 1.0.0 提供的 Java Persistence API (JPA) 支持。该应用程序包含一个 JPA Entity Bean,由一个简单的 Web 客户端使用它。
  • jsf:展示如何在服务器中使用 MyFaces 1.2 提供的 JavaServer Faces (JSF) 支持。
  • ldap-realm:为 ldap-realm-demo 提供服务器范围的 LDAP 域配置计划。(这个示例提供了预构建文件,但是您必须对其进行自定义,以便使用您的 LDAP 服务器。)
  • ldap-realm-demo:使用 ldap-realm 示例以展示如何使用服务器提供的 LDAPLoginModule 配置您的应用程序。
  • magicGball:使用 CORBA 在 J2EE 应用程序客户端和 EJB 之间进行通信。(为安全和非安全的传输提供了单独的计划。)
  • mdb:展示如何通过 OpenEJB 使用消息驱动的 Bean,以便通过 Web 应用程序或者独立的 Java 应用程序使用 ActiveMQ 来更新客户数据库。
  • PlantsByWebSphere:联机存储各种专用于种植和园艺的工具。客户可以打开帐号,浏览要购买的产品,查看产品详细信息、并下订单。
  • tomcat-cluster:嵌入式 Apache Tomcat Web 容器的 Web 层集群、负载平衡和故障转移示例。(这个示例需要两个物理服务器和一个 Internet 连接,以便下载 Apache HTTP 服务器和 mod-jk 文件。)
  • welcome:WebSphere Application Server Community Edition 提供的缺省 Welcome 应用程序。

结束语

IBM WebSphere Application Server Community Edition V2 在许多技术领域中提供了新的特性和增强功能,以帮助改进和加速您的应用程序开发和部署。希望本文有助于提供对 Community Edition 最新版本的概述。下面的参考资料将帮助您更深入地了解和探索 Community Edition V2.0 中提供的更多内容。


致谢

感谢 Donald Woods 对本文进行了审阅,并提供了一些宝贵意见。

参考资料

学习

获得产品和技术

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=WebSphere
ArticleID=261383
ArticleTitle=WebSphere Application Server Community Edition V2.0 中的新特性
publish-date=10152007