配置 WebLogic Server 环境
来源:互联网 发布:ubuntu 系统默认编码 编辑:程序博客网 时间:2024/06/11 07:59
配置 Web 服务器功能
以下部分描述如何配置 WebLogic Server 上承载的 J2EE Web 应用程序,以使其作为承载静态内容的标准 HTTP Web 服务器运行。Web 应用程序还可以承载动态内容,如 JSP 和 Servlet。请参阅开发 WebLogic Server 的 Web 应用程序、Servlet 和 JSP。
配置 Web 服务器组件概述配置服务器Web 应用程序配置虚拟主机WebLogic Server 如何解析 HTTP 请求设置 HTTP 访问日志防止 POST 拒绝服务攻击设置 WebLogic Server 以使用 HTTP 隧道使用本地 I/O 提供静态文件服务(仅适用于 Windows)
配置 Web 服务器组件概述
除了承载基于动态 Java 的分布式应用程序之外,WebLogic Server 还可以作为处理高流量网站的 Web 服务器,提供静态文件(如 HTML 文件和图像文件)以及 Servlet 和 JavaServer Pages (JSP) 服务。WebLogic Server 支持 HTTP 1.1 标准。
配置服务器
可指定每个 WebLogic Server 在其上监听 HTTP 请求的端口。尽管可以指定任何有效的端口号,但如果指定端口80
,那么在用于通过 HTTP 来访问资源的 HTTP 请求中,就可以省略端口号。例如,如果将端口80
定义为监听端口,则可以使用 http://hostname/myfile.html
的形式而不是http://hostname:portnumber/myfile.html
的形式。
在 UNIX 系统上,将进程绑定到小于 1025 的端口的操作必须从具有权限的用户(通常是根)的帐户执行。因此,如果希望 WebLogic Server 在端口 80 上进行监听,则必须作为具有权限的用户启动 WebLogic Server;但是,从安全角度来说,允许长时间运行的进程(如 WebLogic Server)以超过必需权限的权限运行,是不适当的。仅在绑定端口之前,WebLogic 需要根权限。
通过将 weblogic.system.enableSetUID 属性(和 weblogic.system.enableSetGID 属性,如果需要)设置为 true,可以启用一个内部进程,在 WebLogic Server 绑定到端口 80 之后,它将通过该进程切换其 UNIX 用户 ID (UID)。配套属性 weblogic.system.nonPrivUser 和 weblogic.system.nonPrivGroup 会标识 WebLogic Server 在启动后将在其下运行的不具有权限的 UNIX 用户帐户(和组名(可选))。
可切换到 UNIX 帐户“nobody”,该帐户是大多数 UNIX 系统上权限最少的用户。如果需要,则可创建一个专用于运行 WebLogic Server 的 UNIX 用户帐户。请确保 WebLogic Server 所需的文件(如日志文件和 WebLogic 类)可供不具有权限的用户访问。一旦 WebLogic 进程的所有者已切换为不具有权限的用户,WebLogic 便会具有与不具有权限的用户相同的读、写和执行权限。
可为非 SSL 请求和安全(使用 SSL)请求分别定义单独的监听端口。有关配置监听端口的其他信息,请参阅了解网络通道。
配置监听端口
使用管理控制台可将监听端口设置为端口 80。请参阅配置监听端口。如果承载 WebLogic Server 的计算机正在运行 Windows,则请转至配置监听端口的步骤 8。使用管理控制台新建 Unix 计算机。请参阅配置计算机。选中“启用 Post-Bind UID”字段。在“Post-Bind UID”字段中输入要将 WebLogic Server 作为其运行的用户名。选中“启用 Post-Bind GID”字段。在“Post-Bind GID”字段中输入要将 WebLogic Server 作为其运行的组名。单击“保存”。要激活这些更改,请在管理控制台的“更改中心”中,单击“激活更改”。
Web 应用程序
HTTP 和 Web 应用程序是根据来自 Sun Microsystems 的 Servlet 2.4 和 JSP 2.0 规范进行部署的,这些规范将 Web 应用程序作为一种用于对基于 Web 的应用程序组件进行分组的标准来描述。这些组件包括 JSP 页、HTTP Servlet 和静态资源(如 HTML 页或图像文件)。此外,Web 应用程序还可访问外部资源,如 EJB 和 JSP 标记库。每个服务器均可承载任意数量的 Web 应用程序。通常,可将 Web 应用程序的名称作为用于从 Web 应用程序请求资源的 URI 的一部分来使用。
有关详细信息,请参阅开发 WebLogic Server 的 Web 应用程序、Servlet 和 JSP。
Web 应用程序和群集
Web 应用程序可部署到 WebLogic Server 群集。当用户从一个 Web 应用程序请求资源时,该请求会路由到群集中承载该 Web 应用程序的服务器之一。如果应用程序使用会话对象,则必须在群集中的所有节点上复制会话。提供了复制会话的多种方法。
有关详细信息,请参阅使用 WebLogic Server 群集。
指定默认 Web 应用程序
您的域中的每个服务器实例和虚拟主机都可以声明一个默认 Web 应用程序。默认 Web 应用程序可对无法解析到其他已部署 Web 应用程序的任何 HTTP 请求做出响应。和所有其他 Web 应用程序形成对比,默认 Web 应用程序不将 Web 应用程序名作为 URI 的一部分使用。定位到某个服务器或虚拟主机的任何 Web 应用程序均可声明为默认 Web 应用程序。(本部分中后面的内容将对 Web 应用程序的定位进行论述。有关虚拟主机的详细信息,请参阅配置虚拟主机)。
随 WebLogic Server 一起提供的示例域已配置了默认 Web 应用程序。此域中的默认 Web 应用程序已命名为DefaultWebApp
,位于此域的applications
目录下。
例如,如果您的 Web 应用程序名为shopping
,那么您要使用下列 URL 访问该 Web 应用程序中名为cart.jsp
的 JSP:
http://host:port/shopping/cart.jsp
但是,如果将shopping
声明为默认 Web 应用程序,则要使用下列 URL 来访问 cart.jsp
:
http://host:port/cart.jsp
(其中,host
是运行 WebLogic Server 的计算机的主机名,port
是 WebLogic Server 正在使用其监听请求的端口号。
要为某个服务器或虚拟主机指定默认 Web 应用程序,请将 application.xml 或 weblogic.xml 文件中的上下文根设置为 ""。
如果声明了无法正确部署的默认 Web 应用程序,则会记录一个错误,并且尝试访问失败的默认 Web 应用程序的用户将收到 HTTP404
错误消息。
配置虚拟主机
通过虚拟主机,可以定义服务器或群集要响应的主机名。使用虚拟主机时,要使用 DNS 来指定一个或多个映射到 WebLogic Server 实例或群集的 IP 地址的主机名,并指定该虚拟主机所服务的 Web 应用程序。在群集中使用时,负载平衡将允许最高效地使用您的硬件,即使其中一个 DNS 主机名处理的请求多于其他 DNS 主机名,也是如此。
例如,您可以指定,名为books
的 Web 应用程序响应名为 www.books.com
的虚拟主机的请求,并且这些请求会定位到 WebLogic Server A、B 和 C,而名为cars
的 Web 应用程序响应名为www.autos.com
的虚拟主机的请求,并且这些请求会定位到 WebLogic Server D 和 E。您可以配置虚拟主机、WebLogic Server 实例、群集和 Web 应用程序的多种组合,具体取决于您的应用程序和 Web 服务器的需求。
对于您定义的每个虚拟主机,您还可以单独为其定义 HTTP 参数和 HTTP 访问日志。为虚拟主机设置的 HTTP 参数和访问日志会替换那些为服务器设置的 HTTP 参数和访问日志。您可以指定任意数量的虚拟主机。
可通过将虚拟主机定位到服务器或服务器的群集来激活虚拟主机。定位到某个群集的虚拟主机将应用到该群集中的所有服务器。
虚拟主机和默认 Web 应用程序
还可以为每个虚拟主机指定一个默认 Web 应用程序。虚拟主机的默认 Web 应用程序会对无法解析到部署在与该虚拟主机相同的服务器或群集上的其他 Web 应用程序的所有请求做出响应。
与其他 Web 应用程序不同,默认 Web 应用程序不将 Web 应用程序名(也称为上下文路径)作为用于访问默认 Web 应用程序中资源的 URI 的一部分来使用。
例如,如果定义了虚拟主机名www.mystore.com
,并将其定位到在其上部署了名为shopping
的 Web 应用程序的服务器,则要使用以下 URI 从shopping
Web 应用程序访问名为cart.jsp
的 JSP:
http://www.mystore.com/shopping/cart.jsp
但是,如果将shopping
声明为虚拟主机 www.mystore.com
的默认 Web 应用程序,则要使用以下 URI 来访问cart.jsp
:
http://www.mystore.com/cart.jsp
有关详细信息,请参阅WebLogic Server 如何解析 HTTP 请求。
将多个虚拟主机与不同的默认 Web 应用程序一起使用时,不能使用单一登录,因为每个 Web 应用程序都会覆盖前一个 Web 应用程序设置的 JSESSIONID cookie。即使每个默认 Web 应用程序中的 CookieName、CookiePath 和 CookieDomain 都完全相同,也会出现上述情况。
设置虚拟主机
使用管理控制台可定义虚拟主机。请参阅虚拟主机。将用于为虚拟主机命名的指令行添加到服务器上的etc/hosts
文件中,以确保可解析该虚拟主机名。
WebLogic Server 如何解析 HTTP 请求
当 WebLogic Server 收到一个 HTTP 请求时,它会通过解析 URL 的各个部分来解析该请求,并使用该信息确定哪个 Web 应用程序和/或服务器应处理该请求。表 5-1 说明了 Web 应用程序、虚拟主机、Servlet、JSP 和静态文件的各种请求组合和最终生成的响应。
表 5-1 提供了一些示例 URL 和 WebLogic Server 所服务的文件。“是否选中索引目录”列是指“索引目录”特性,该特性可控制是否提供目录列表服务(如果未专门请求任何文件)。
http://host:port/apples
apples
Web 应用程序中定义的欢迎文件*。 http://host:port/apples
apples
Web 应用程序顶层目录的目录列表。http://host:port/oranges/naval
oranges
Web 应用程序中 /naval
的 <url-pattern>
进行映射的 Servlet。
http://host:port/naval
oranges
Web 应用程序中 /naval
的 <url-pattern>
进行映射的Servlet(oranges
已定义为默认 Web 应用程序)。http://host:port/apples/pie.jsp
pie.jsp
,来自apples
Web 应用程序的顶层目录。http://host:port
http://host:port
http://host:port/apples/myfile.html
myfile.html
,来自apples
Web 应用程序的顶层目录。http://host:port/myfile.html
myfile.html
,来自默认 Web 应用程序的顶层目录。http://host:port/apples/images/red.gif
red.gif
,来自apples
Web 应用程序顶层目录的图像子目录。http://host:port/myFile.html
其中,
myfile.html
不存在于 apples
Web 应用程序中,并且,默认 Servlet 尚未被定义。http://www.fruit.com/
www.fruit.com
的虚拟主机的默认 Web 应用程序的欢迎文件。http://www.fruit.com/
www.fruit.com
的虚拟主机的 default
Web 应用程序顶层目录的目录列表。http://www.fruit.com/oranges/myfile.html
myfile.html
,来自定位到具有主机名www.fruit.com
的虚拟主机的oranges
Web 应用程序。
设置 HTTP 访问日志
WebLogic Server 能够以常用日志格式或扩展日志格式将所有 HTTP 事务的日志保存在一个文本文件中。常用日志格式为默认格式。通过扩展日志格式可以自定义要记录的信息。您可以为每个服务器实例或您定义的每个虚拟主机设置用于定义 HTTP 访问日志行为的特性。
要为服务器或虚拟主机设置 HTTP 日志记录,请参阅“管理控制台联机帮助”中的以下主题:
启用和配置 HTTP 访问日志为虚拟主机配置 HTTP 日志文件设置
日志滚动
可根据文件的大小,或在指定的时间量已过去之后滚动日志文件。在符合上述任一标准的情况下,会关闭当前访问日志文件并启动一个新的访问日志文件。如果不配置日志滚动,则 HTTP 访问日志文件会无限增长。可将访问日志文件的名称配置为包含时间和日期戳(用于表示滚动日志的时间)。如果不配置时间戳,则每个滚动文件的名称都会包含数字部分,该数字部分会随每次滚动而增加。对于已定义的每个虚拟主机,都会针对其保存单独的 HTTP 访问日志。
常用日志格式
用于所记录的 HTTP 信息的默认格式为常用日志格式。此标准格式遵循以下模式:
host RFC931 auth_user [day/month/year:hour:minute:second UTC_offset] "request" status bytes
其中:
host
RFC931
auth_user
day/month/year:hour:minute:second UTC_offset
"request"
status
bytes
使用扩展日志格式设置 HTTP 访问日志
WebLogic Server 还支持扩展日志文件格式(版本 1.0,是由draft specification from W3C 定义的新兴标准)。当前的权威性参考位于W3C Technical Reports and Publications page。
使用扩展日志格式,您可以指定所记录的关于每次 HTTP 通信的信息的类型和顺序。要启用此格式,请在管理控制台中,将“HTTP”选项卡上的“格式”特性设置为Extended
。(请参阅创建自定义字段标识符。)
可使用指令(包含在实际日志文件自身中)指定应记录在日志文件中的信息。指令开始于新行,并以 # 号开头。如果日志文件不存在,则将新建一个带有默认指令的日志文件。但是,如果在服务器启动时,日志文件已存在,则该文件必须在其开头位置包含合法指令。
创建 Fields 指令
日志文件的第一行必须包含用于声明日志文件格式的版本号的指令。还必须在文件的开头附近包含Fields
指令:
#Version: 1.0 #Fields:
xxxx xxxx xxxx
...
其中,每个xxxx
描述了要记录的数据字段。字段类型可指定为简单标识符,或采用前缀标识符格式(在 W3C 规范中定义)。示例如下:
#Fields: date time cs-method cs-uri
此标识符会指示服务器记录事务的日期和时间、客户端使用的请求方法和每个 HTTP 访问请求的 URI。每个字段都以空格进行分隔,并且每条记录都会写入一个新行(追加到日志文件)。
注意:在日志文件中,#Fields
指令后面必须为一个新行,以便第一条日志文件消息不会追加到同一行。
支持的字段标识符
以下标识符是受支持的,不需要前缀。
date
time
time-taken
bytes
请注意,WebLogic Server 不支持 W3C 规范中定义的cached
字段。
以下标识符需要前缀,不能单独使用。对于受支持的前缀组合,将单独进行介绍。
IP 地址相关字段:
c-ip
s-ip
DNS 相关字段
c-dns
s-dns
sc-status
sc-comment
cs-method
cs-uri
cs-uri-stem
cs-uri-query
创建自定义字段标识符
还可以创建将包含在使用扩展日志格式的 HTTP 访问日志文件中的用户定义的字段。要创建自定义字段,请使用Fields
指令标识 ELF 日志文件中的字段,然后创建一个可生成所需输出的匹配 Java 类。可为每个字段创建单独的 Java 类,或创建可输出多个字段的 Java 类。有关这样一个类的 Java 源代码示例,请参阅用于创建自定义 ELF 字段的 Java 类。
要创建自定义字段,请执行下列操作:
使用以下形式,将字段名包含在Fields
指令中:x-
myCustomField
.其中,myCustomField
是完全限定的类名。有关Fields
指令的详细信息,请参阅创建 Fields 指令。创建一个与使用Fields
指令定义的自定义字段具有相同完全限定类名的 Java 类(例如myCustomField
)。此类会定义要记录在自定义字段中的信息。该 Java 类必须实现以下接口:weblogic.servlet.logging.CustomELFLogger
在您的 Java 类中,必须实现logField()
方法,该方法将HttpAccountingInfo
对象和FormatStringBuffer
对象作为其参数:使用HttpAccountingInfo
对象可访问那些可在自定义字段中输出的 HTTP 请求和响应数据。已提供了 Getter 方法来访问此信息。有关这些 get 方法的完整列表,请参阅HttpAccountingInfo 对象的 Get 方法。使用 FormatStringBuffer 类可创建自定义字段的内容。已提供了相应的方法来创建合适的输出。有关这些方法的详细信息,请参阅FormatStringBuffer 的 Javadocs。
编译该 Java 类并将该类添加到用于启动 WebLogic Server 的CLASSPATH
语句。您可能需要在用于启动 WebLogic Server 的脚本中修改CLASSPATH
语句。注意:请不要将此类放入展开格式或 jar 格式的 Web 应用程序或企业应用程序内部。将 WebLogic Server 配置为使用扩展日志格式。有关详细信息,请参阅使用扩展日志格式设置 HTTP 访问日志。
HttpAccountingInfo 对象的 Get 方法
以下方法可返回有关 HTTP 请求的各种数据。这些方法类似于javax.servlet.ServletRequest
、javax.servlet.http.Http.ServletRequest
和javax.servlet.http.HttpServletResponse
的各种方法。
有关这些方法的详细信息,请参阅下表中列出的 Java 接口中的相应方法,或参阅该表中包含的特定信息。
Object getAttribute(String name);
Enumeration getAttributeNames();
String getCharacterEncoding();
int getResponseContentLength();
setContentLength()
set
ContentLength()
方法设置)。String getContentType();
Locale getLocale();
Enumeration getLocales();
String getParameter(String name);
Enumeration getParameterNames();
String[] getParameterValues(String name);
String getProtocol();
String getRemoteAddr();
String getRemoteHost();
String getScheme();
String getServerName();
int getServerPort();
boolean isSecure();
String getAuthType();
String getContextPath();
Cookie[] getCookies();
long getDateHeader(String name);
String getHeader(String name);
Enumeration getHeaderNames();
Enumeration getHeaders(String name);
int getIntHeader(String name);
String getMethod();
String getPathInfo();
String getPathTranslated();
String getQueryString();
String getRemoteUser();
String getRequestURI();
String getRequestedSessionId();
String getServletPath();
Principal getUserPrincipal();
boolean isRequestedSessionIdFromCookie();
boolean isRequestedSessionIdFromURL();
boolean isRequestedSessionIdFromUrl();
boolean isRequestedSessionIdValid();
long getInvokeTime();
int getResponseStatusCode();
String
getResponseHeader(String name);
importweblogic.servlet.logging.CustomELFLogger
;importweblogic.servlet.logging.
FormatStringBuffer;importweblogic.servlet.logging.
HttpAccountingInfo;
/* 此示例将 User-Agent 字段输出到名为 MyCustomField 的自定义字段*/
public class MyCustomField implements CustomELFLogger{
public void logField(HttpAccountingInfo metrics, FormatStringBuffer buff) { buff.appendValueOrDash(metrics.getHeader("User-Agent")); }}
防止 POST 拒绝服务攻击
拒绝服务攻击是一种使用假冒请求使服务器过载的恶意尝试。一种常见类型的攻击就是在 HTTPPOST
方法中发送大量数据。可在 WebLogic Server 中设置三个特性,以防此类型的攻击。这些特性可在控制台中的“服务器”或“虚拟主机”下设置。如果为某个虚拟主机定义了这些特性,则为该主机设置的值会替换在“服务器”下设置的那些对应的值。
PostTimeoutSecs
PostTimeoutSecs
的默认值为 30。MaxPostTimeSecs
PostTimeoutException
,并且以下消息将发送到服务器日志:Post time exceeded MaxPostTimeSecs.
MaxPostTimeSecs
的默认值为 30。MaxPostSize
MaxPostSizeExceeded
异常,并且以下消息将发送到服务器日志:POST size exceeded the parameter MaxPostSize.
MaxPostSize
的默认值为 -1。
设置 WebLogic Server 以使用 HTTP 隧道
HTTP 隧道提供了一种方法,可用于在只能使用 HTTP 协议的情况下模拟 WebLogic Server 和 Java 客户端之间的有状态套接口连接。它通常用于以隧道方式通过安全防火墙中的 HTTP 端口。HTTP 是一种无状态协议,但 WebLogic Server 提供了隧道功能,可使连接看上去似乎为常规的 T3Connection。但是,可以预料到,与正常的套接口连接相比,它会有某些性能损失。
配置 HTTP 隧道连接
使用 HTTP 协议时,客户端可能只是做出一个请求,然后接收来自一台服务器的一个答复。服务器可能不会自动与该客户端进行通信,并且该协议是无状态的,这意味着不可能建立连续的双向连接。
WebLogic HTTP 隧道通过 HTTP 协议来模拟 T3Connection,从而越过了这些限制。有两个可在管理控制台中配置的特性,可用于调整隧道连接以获得更好的性能。建议将其保留为其默认设置(除非遇到了连接问题)。服务器会使用这些属性来确定客户端连接是否有效或客户端是否仍处于活动状态。
Enable Tunneling
Tunneling Client Ping
客户端会接受响应并立即自动发送另一个请求。Tunneling Client Timeout
自客户端上次将一个请求发送到服务器(以响应一个答复)以来,已经过了在此特性中设置的秒数,则服务器会将客户端视为不可用,并会中断该 HTTP 隧道连接。服务器会以此特性指定的间隔检查已经过的时间,如果未超过设置的秒数,则它会响应客户端的请求。从客户端连接到 WebLogic Server
当您的客户端请求与 WebLogic Server 进行连接时,要使用 HTTP 隧道,您需要执行的全部操作就是在 URL 中指定 HTTP 协议。例如:
Hashtable env = new Hashtable(); env.put(Context.PROVIDER_URL, "http://wlhost:80"); Context ctx = new InitialContext(env);
在客户端,一个特定标记会附加到http
协议,以便 WebLogic Server 知道这是一个隧道连接而不是一个常规的 HTTP 请求。您的应用程序代码不需要执行额外的工作来实现上述功能。
客户端必须在 URL 中指定端口,即使端口为 80,也是如此。虽然最常见的选择是端口 80 (因为通常会允许发送到端口 80 的请求通过防火墙),但是您也可设置您的 WebLogic Server 实例,以便在任意端口监听 HTTP 请求。
可以在管理控制台中“服务器”节点下的“网络”选项卡下,指定用于 WebLogic Server 的监听端口。
使用本地 I/O 提供静态文件服务(仅适用于 Windows)
在 Windows NT/2000/XP 上运行 WebLogic Server 时,可指定 WebLogic Server 使用本地操作系统调用 TransmitFile(而不是使用 Java 方法)来提供静态文件(如 HTML 文件、文本文件和图像文件)服务。当对较大的静态文件提供服务时,使用本地 I/O 可提高性能。
要使用本地 I/O,请将两个参数添加到 Web 应用程序(该 Web 应用程序包含要使用本地 I/O 来对其提供服务的文件)的 web.xml 部署描述符。要启用本地 I/O 文件服务,应将第一个参数 weblogic.http.nativeIOEnabled 设置为 TRUE。第二个参数 weblogic.http.minimumNativeFileSize 会设置用于使用本地 I/O 的最小文件大小。如果所服务的文件的大小大于该值,则会使用本地 I/O。如果不指定此参数,则将使用为 4K 的值。
通常,在对较大的文件提供服务时,本地 I/O 会提供更大的性能增益;但是,当运行 WebLogic Server 的计算机上的负载增加时,这些增益会减少。要找到合适的 weblogic.http.minimumNativeFileSize 值,您可能需要进行试验。
以下示例显示了应添加到 web.xml 部署描述符中的完整条目。这些条目必须放在 web.xml 文件中的 <distributable> 元素之后、<servlet> 元素之前。
<context-param> <param-name>weblogic.http.nativeIOEnabled</param-name> <param-value>TRUE</param-value></context-param><context-param> <param-name>weblogic.http.minimumNativeFileSize</param-name> <param-value>500</param-value></context-param>
weblogic.http.nativeIOEnabled 也可设置为 FileServlet 中的上下文参数。
- 配置 WebLogic Server 环境
- 配置WebLogic Server集群
- 配置WebLogic Server集群
- 中国人民银行--WebLogic Server配置
- 配置WebLogic Server集群二
- 配置WebLogic Server集群(转)
- 配置WebLogic Server 9.2集群
- 使用Ant配置Weblogic环境
- Eclipse+MyEclipse+Weblogic环境配置
- 【Weblogic】Weblogic Server环境下JNDI命名服务
- 【Weblogic】 Weblogic Server环境下使用JMS服务
- Windows Server+Oracle+WebLogic环境总结
- weblogic安装配置,myeclipse中配置开发weblogic环境
- weblogic安装配置,myeclipse中配置开发weblogic环境
- WebLogic Server 8.1 数据库连接池配置问题
- 基于WebLogic Server的ALSR集群配置
- Linux下配置WebLogic Server集群
- WebLogic Server 集群的配置示例
- 基本Shadow Mapping问题汇总及解决方法
- JVM垃圾回收机制详解和调优
- 优先队列priority_queue 用法详解
- L - Access System(水)
- Ubuntu Cocos2dx 学习笔记——纹理动画
- 配置 WebLogic Server 环境
- 五周作业——有向图邻接表表示及反向图构造
- 2014-04-14 设备管理之闪存技术设备框架
- JAVA中堆和栈的区别
- 安装Eclipse Maven插件的几种方法
- android—DOM解析xml
- java笔试题3
- c# 将winform窗体应用程序编译成dll
- 医疗改革必然会对网络营销起到一定程度上的影响