classload

来源:互联网 发布:最好吃的方便面知乎 编辑:程序博客网 时间:2024/05/27 20:40

http://infolib.lotus.com/resources/portletfactory/7.0.1/docs/pf701abd001/zh_cn/designer-html-wrapper.htm#c_configuring

 

 CitiPlannerCacheServlet.classLoader=[org.apache.geronimo.kernel.classloader.JarFileClassLoader id=geronimo/GTC_NEW_CITIPLANNER/1/war]
CitiPlannerController.class.getClassLoader=com.bowstreet.engine.ServiceClassLoader@1570157

 

(3) servlet not extends “TimerTask” if load servlet during start server, else server will keep in starting status until timeout error

Server IBM WASCE v2.1 Server at localhost was unable to start within 900 sec.

J2EEDeploymentHandler servlet

J2EEDeploymentHandler 是一个 servlet,引导IBM WebSphere Portlet Factory 的多个运行时属性的初始化。

J2EE 应用程序服务器首次初始化 WebSphere Portlet Factory 的应用程序时,此 Servlet 运行一次。此 Servlet 的设计目的不是用于处理最终用户请求,因此在WebSphere Portlet Factory 附带的缺省web.xml 文件中没有 URL 映射。

如果您对 WebSphere Portlet Factoryweb.xml 部署描述符进行更改,请细心保持应用程序服务器初始化 WebSphere Portlet Factory 的 Servlet 的顺序。J2EEDeploymentHandler 始终必须在其他WebSphere Portlet Factory Servlet 之前初始化。如果违反此要求, WebSphere Portlet Factory 将不能正确初始化,在处理最终用户请求时,很可能会导致错误。

如果需要向 WebSphere Portlet Factoryweb.xml 描述符添加定制的 servlet,建议您在初始化 WebSphere Portlet Factory 的所有 Servlet 后再初始化这些新的 servlet。此方法保证所有WebSphere Portlet Factory 资源都被正确初始化后才用于定制的 servlet。如果您定制的 Servlet 不使用任何WebSphere Portlet Factory 资源,那么安全的方法是按照对应用程序有意义的任何顺序进行初始化。

 

 import com.bowstreet.webapp.*;

配置动态类装入

可以通过设置属性来配置动态类装入。

  1. 浏览至项目 WEB-INF/config 目录,并查找 bowstreet.propertiesoverride.properties 文件。

    如果 override.properties 文件不存在,请创建该文件。

  2. 在文本编辑器中,打开 override.properties 文件并找到以下两个属性。
    • bowstreet.dynamic.class.load.checkTimestamp
    • bowstreet.dynamic.class.load.path
  3. 如果文件中没有这些属性,请打开 bowstreet.properties 文件,将包含这些属性的行复制粘贴到 override.properties 文件中。
  4. override.properties 文件中,如以下示例所示更改设置。
    bowstreet.dynamic.class.load.checkTimestamp=truebowstreet.dynamic.class.load.path=${bowstreet.rootDirectory}/work/classes,${bowstreet.rootDirectory}/work/lib
    注: 动态装入的类不能位于 Java 类路径上以及动态装入。
  5. 保存并关闭 override.properties 文件。

动态类装入将启用。每次 WebSphere Portlet Factory Servlet 进行服务调用时,都会检查类文件时间戳记。如果存在更新的时间戳记,那么将装入新版本的类。通常,由于性能原因,checkTimestamp 属性在开发环境中设置为 true,而在生产环境中设置为 false。

 

关于配置动态类装入

您可以配置 IBM WebSphere Portlet Factory Servlet 以动态装入链接 Java 对象、概要文件集管理器和重新生成类。

通常, WebSphere Portlet Factory Servlet 仅在启动时才装入类文件。基于 Java 的 Web Service 或“链接 Java 对象”构建器可能使用类文件。您可能希望启用动态类装入功能以确保服务或对象调用最新版本的可用类文件。

在常规操作方式下,每次启动应用程序服务器时,JVM 的缺省类装入器将装入类路径中的类文件。但是,如果当应用程序服务器正在运行时更改类文件(例如,如果您重新编译 Java 文件),那么缺省类装入器不会重新装入该类。

在开发环境中,您可能需要经常重新装入类。但是,您可能不想(或不能)在每次更改类文件时,都重新启动应用程序服务器。此时动态类装入可能很有用。

请注意,启用动态类装入时,需要付出一定的性能代价。启用动态类装入时,每次模型调用服务或链接的对象类都将检查类文件时间戳记。由于此原因,建议仅在开发环境中启用动态类装入,而在开发或生产环境将其禁用。

注: 在开发/生产环境中,请确保所有服务类文件都位于 WebSphere Portlet Factory Servlet 的类路径中。

不要求应用程序服务器重新启动就可能配置 WebSphere Portlet Factory Servlet 以动态装入 Java 类文件。如果您共享开发WebSphere Portlet Factory servlet,并经常更新服务使用的 Java 类,您可能想要执行此操作。

注: 根据安全实现方法,您的应用程序服务器上或许可以使用动态类装入。

动态类装入

Java 类可从 bowstreet.dynamic.class.load.path 属性中指定的目录动态装入。

  • WebSphere Portlet Factory 和 WebSphere Portlet Factory Designer 类以及 JAR 目录
  • 类装入如何进行
  • 关于使用类和 JAR 文件的提示

WebSphere Portlet FactoryWebSphere Portlet Factory Designer 类以及 JAR 目录

bowstreet.dynamic.class.load.path 属性的缺省值是项目的IBM WebSphere Portlet FactoryWEB-INF/work/classesWEB-INF/work/lib 目录。

下列目录用于存储 WebSphere Portlet Factory 项目和 web 归档 (WAR) 文件系统中的 Java 类和 JAR 文件:

WEB-INF/classes
WebSphere Portlet Factory 用来存储类文件的静态目录。类在被引用时装入,并且不检查发生的更改。要刷新此目录并查看类文件的更改,必须重新启动服务器。
WEB-INF/lib
WebSphere Portlet Factory 用来存储 JAR 文件的静态目录。JAR 在应用程序启动时装入,并且不检查发生的更改。要刷新此目录并查看 JAR 更改,必须重新启动服务器。
WEB-INF/work/classes
WebSphere Portlet Factory Designer 用来动态存储可重装类文件的目录。无需重新启动WebSphere Portlet Factory Designer 或服务器,就可以立即应用对类文件的更改。有关更多信息,请参阅类装入如何进行。
WEB-INF/work/lib
WebSphere Portlet Factory Designer 用来动态存储可重装 JAR 文件的目录。无需重新启动WebSphere Portlet Factory Designer 或服务器,就可以立即应用对 JAR 文件的更改。有关更多信息,请参阅类装入如何进行。

WebSphere Portlet Factory 动态类装入器从 WEB-INF/work/classesWEB-INF/work/lib 文件夹装入类。

在服务器端, WebSphere Portlet Factory 动态类装入器将装入授权给 J2EE WAR 类装入器。此类装入器从 WAR 文件的WEB-INF/classesWEB-INF/lib 文件夹装入类,并将装入授权给应用程序服务器的类装入器。

WebSphere Portlet Factory Designer 端, WebSphere Portlet Factory 动态类装入器将装入授权给WebSphere Portlet Factory WAR 类装入器。每个WebSphere Portlet Factory 项目都有其自己的 Designer WAR 类装入器,以根据当前项目的 Eclipse Java 构建路径装入类。Designer WAR 类装入器使用 Eclipse Java 构建路径中的所有条目(项目的WEB-INF/work/classesWEB-INF/work/lib 文件夹下的条目除外)。Designer WAR 类装入器将装入授权给 Eclipse 类装入器。

装入授权使 WebSphere Portlet Factory 项目能够以在服务器上的相同方式在 Designer 中运作。

您应该遵循以下指南。
  • 在项目的 WEB-INF/libWEB-INF/work/lib 文件夹中,放置应用程序所需的、需要以 WAR 文件打包的 JAR 文件。
  • 对于应用程序所需的但在运行时已存在于应用程序服务器内(因此无须再以 WAR 文件打包)的那些 JAR 文件,请执行以下操作之一。
    • 将 JAR 文件放在项目的 WEB-INF/clientLibs 文件夹中。
    • 将此类 JAR 文件作为项目的 Eclipse Java 构建路径中的外部 JAR 文件进行引用。
  • 在所有情况中,如果您将 JAR 文件添加至 WebSphere Portlet Factory 项目(无论在WEB-INF/libWEB-INF/work/lib 还是WEB-INF/clientLibs 文件夹内),请在项目的 Eclipse Java 构建路径中添加对该文件的引用。

类装入如何进行

编译项目 WEB-INF/work/source/ 树中的 Java 源代码,并将其输出存储在项目WEB-INF/work/classes 树中。此目录的内容将动态装入,无需重新启动WebSphere Portlet Factory Designer 或服务器,即可使更改生效。因此,任何 Java 源代码更改都可以立即在WEB-INF/work/classes 中看到。此安排对于需要经常更改源代码的开发非常有用。

在需要考虑 JAR 文件的地方,WEB-INF/work/lib 目录的功能与WEB-INF/work/classes 目录相当。

关于使用类和 JAR 文件的提示

  • 开发期间,请将类和 JAR 文件保存在 WEB-INF/work 目录下。开发完成后,您可以关闭开发计算机上的动态类装入,以改进应用程序性能。

    通过在 WEB-INF\config\override.properties 文件中将以下属性设置为 false,可以禁止装入动态类:

    bowstreet.dynamic.class.load.checkTimestamp
  • (可选)创建用于管理 WebSphere Portlet Factory Java 工件的单独项目,并为随后可以放入WebSphere Portlet FactoryWEB_INF/work/lib 目录的结果类创建 JAR 文件。
  • 使用 JAR 文件分发您创建的构建器和其他基于 JAVA 的项。

 

 

0 0