解析plugin-cfg.xml文件

本文档详细介绍了WebSphere HTTP插件配置文件的各项元素和属性,包括配置项、服务器集群、虚拟主机组等核心内容,以及如何利用这些配置实现请求的路由和负载均衡。
Config(必需)

此元素启动 WebSphere HTTP 插件配置文件。它可以包含一个或多个下列元素和属性:

IgnoreDNSFailures
指定启动时插件是否忽略配置中的 DNS 故障。当设置为 true 时,如果每个 ServerCluster 中至少有一个服务器能够解析主机名,则插件忽略配置中的 DNS 故障并成功启动。任何主机名无法解析的服务器在配置期间标记为不可用。稍后在路由请求期间不会尝试解析该主机名。如果发生 DNS 故障,则日志消息将被写入插件日志文件,并继续插件初始化而不会导致无法启动 Web 服务器。缺省值为 false,意味着 DNS 故障会导致 Web 服务器不启动。
RefreshInterval
插件应该检查配置文件以查看是否发生更新或更改的时间间隔(以秒计)。插件检查文件自上次装入插件配置以来,是否有任何修改。

在经常发生更改的开发环境中,低于缺省设置 60 的设置更合适些。在生产环境中,因为不会经常更新配置,所以比缺省值高的值更合适些。如果由于某些原因重新装入插件失败,则一条消息被写入插件日志文件,并使用先前的配置,直到成功重新装入插件配置文件。如果您还未看到对插件配置的更改,则检查插件日志文件以获取对问题的说明。

ASDisableNagle
指定用户是否要对插件和应用程序服务器之间的连接禁用 nagle 算法。缺省情况下,nagle 算法处于启用状态。

值可以为 truefalse

IISDisableNagle
指定用户是否要在 Microsoft Internet Informations Services(IIS)上禁用 nagle 算法。缺省情况下,nagle 算法处于启用状态。

值可以为 truefalse

AppServerPortPreference
此属性用于指定 Application Server 应该使用哪个端口号构建 sendRedirect 的 URI。可以指定以下值:
  • webserverPort(如果要使用入局 HTTP 请求的主机头的端口号)。
  • hostHeader(如果要使用 Web 服务器接收请求的端口号)。

缺省值为 hostHeader

ResponseChunkSize
插件读取响应主体(以 64k 块计),直到读取所有的响应数据。此方法会导致包含大量数据的响应主体请求的性能问题。

ResponseChunkSize 属性使您可以指定读取响应主体时要使用的最大块大小。例如,Config ResponseChunkSize="N">,其中 N 等于块大小(以千字节计)。

如果响应主体的内容长度是未知的,则会分配 N 千字节的缓冲区大小,并且以 N 千字节大小的块读取主体,直到读完整个主体。如果内容长度已知,则使用内容长度或 N(哪一个较小就用哪一个)的缓冲区大小以读取响应主体。

缺省块大小为 64k。

AcceptAllContent
指定当请求头中包含 Content-Length 或 Transfer-encoding 头时,用户是否可以在 POST、PUT、GET 和 HEAD 请求中包含内容。您可以为此属性指定下列某个值:
  • 如果内容是期望的并要为所有请求读取该内容,则请指定 True
  • 如果内容是期望的并要仅为 POST 和 PUT 请求读取该内容,则请指定 False。

False 为缺省值。

ChunkedResponse
指定当对客户机的响应中包含 Transfer-Encoding : Chunked 响应头时,插件是否应该将该响应进行分块。

此属性仅适用于 IIS、IPlanet 和 Domino Web 服务器。IBM HTTP Server 自动处理是否将对客户机的响应进行分块。

您可以为此属性指定下列某个值:

  • 如果当对客户机的响应中包含 Transfer-Encoding : Chunked 响应头时插件要将该响应进行分块,则指定 true
  • 如果不要将该响应分块,则指定 false

false 是缺省值。

IISPluginPriority
指定 IIS Web 服务器装入 WebSphere Web 服务器插件的优先级。您可以为此属性指定下列某个值:
  • High
  • Medium
  • Low

缺省值为 High

注意:
  • IIS Web 服务器在启动期间使用此值。因此,必须重新启动 Web 服务器,此更改才会生效。
  • 缺省值 High 确保所有请求在由任何其他过滤器/扩展处理前已由 WebSphere Web 服务器插件处理。如果使用优先级 Medium 或 Low 时发生问题,则必须重新排列干预过滤器/扩展的顺序或更改它们的优先级。
Log
日志描述由插件写的日志消息的位置和级别。如果配置文件中未指定日志,则在一些情况下,日志消息将被写到 Web 服务器错误日志中。

例如,您可以指定以下各项:

<Log LogLevel="Error" Name="/log_directory/filename"/>
Name(每个 Log 必须有且只能有一个该属性)
日志文件的标准路径,插件会将错误消息写入该日志文件。
注: 日期与时间戳记以及进程标识都不再追加到您为插件日志文件指定的名称。因此,将创建单个 Web 服务器插件日志文件,而不是创建多个按日期来区别的日志文件。此行为与 V5.x 的行为有所不同。
LogLevel(每个 Log 可以有零个或一个该属性)
插件应该写入日志的日志消息的详细信息级别。您可以为此属性指定下列某个值:
  • Trace。此请求过程中的全部步骤都详细记录。
  • Stats。记录了为每个请求选择的服务器和其他与请求处理相关的负载均衡信息。
  • Warn。所有来自异常请求处理的警告和错误消息被记录。
  • Error。仅记录来自异常请求处理导致的错误消息。
  • Debug。记录处理请求时执行的所有关键步骤。
  • Detail。记录关于请求和响应的所有信息。

如果没有为 Log 元素指定 LogLevel,则将使用缺省值 Error。

将级别设置为 Trace 时,请小心。许多消息在此级别记录,该级别会导致文件系统非常快速地用尽。决不应该在正常运作环境中使用 Trace 设置,因为它会对性能有负面影响。

Property Name="esiEnable" Value="true/false"
用来启用或禁用 Edge Side Include(ESI)处理器。如果 ESI 处理器和于禁用状态,则将忽略此文件中的其他 ESI 元素。

Value 可以设置为 truefalse。缺省情况下,ESI 处理器处于启用状态(已设置为 true)。

Property Name="esiMaxCacheSize" Value="interger"
一个整数,它指定高速缓存的最大大小(以 1K 字节计)。高速缓存的缺省最大大小是 1024K 字节(1 兆字节)。如果高速缓存已满,则要从高速缓存逐出的第一个条目是最接近其截止时间的条目。
Property Name="ESIInvalidationMonitor" Value="true/false"
用来指示 ESI 处理器是否应接收来自 Application Server 的失效。

Value 可以设置为 truefalse。缺省情况下,此属性设置为 false

对于 WebSphere for z/OS HTTP Server 插件,必须始终将此属性设置为 false

Property Name="FIPSEnable" Value="true/false"
用来指示是否应启用联合信息处理标准(FIPS)来建立与 Application Server 的安全连接。如果 Application Server 上启用了 FIPS,则应将此属性设置为 true。

Value 可以设置为 truefalse。缺省情况下,此属性设置为 false

ServerCluster(每个 Config 可以有一个或多个该元素)
一组服务器,这些服务器通常配置为对同一类型的请求提供服务。

最简单的情况是集群仅包含一个服务器定义。在定义了多个服务器的情况下,插件将使用循环法或 Random 算法将负载均衡地分布到所定义的服务器上。缺省值为“循环法”(Round Robin)。

以下是 ServerCluster 元素的示例

<ServerCluster CloneSeparatorChange="false"
        LoadBalance="Round Robin" Name="Cluster1"
        PostSizeLimit="10000000" RemoveSpecialHeaders="true" 
        RetryInterval="60">
<Server
CloneID="BA36BEC1EB243D8B000000E4000000030926301B"
            ConnectTimeout="0" ExtendedHandshake="false"
            LoadBalanceWeight="2" MaxConnections="0"
            Name="SY1_ClusterMember1" WaitForContinue="false">
<Transport Hostname="BOSSXXXX.PLEX1.L2.IBM.COM" Port="9084" Protocol="http"/>
<Transport Hostname="BOSSXXXX.PLEX1.L2.IBM.COM" Port="0" Protocol="https">
<Property Name="Keyring" value="/WebSphere/V6R0M0/DeploymentManager/etc/
            plugin-key.kdb"/>
<Property Name="Stashfile" value=""/WebSphere/V6R0M0/DeploymentManager/etc/
            plugin-key.sth"/>
<Property Name="certLabel" Value="selfsigned"/>
</Transport>
</Server>
<Server CloneID="BA36BED017FDF40E000000E4000000030926301B"
            ConnectTimeout="0" ExtendedHandshake="false"
            LoadBalanceWeight="2" MaxConnections="0"
            Name="SY1_ClusterMember2" WaitForContinue="false">
<Transport Hostname="BOSSXXXX.PLEX1.L2.IBM.COM" Port="9085" Protocol="http"/>
<Transport Hostname="BOSSXXXX.PLEX1.L2.IBM.COM" Port="0" Protocol="https">
<Property Name="Keyring" value="/WebSphere/V6R0M0/DeploymentManager/etc/
            plugin-key.kdb"/
<Property Name="Stashfile" value="/WebSphere/V6R0M0/DeploymentManager/etc/
            plugin-key.sth"/>
<Property Name="certLabel" Value="selfsigned"/>
</Transport>
</Server>
<PrimaryServers>
<Server Name="Server Name="SY1_ClusterMember1"/>
<Server Name="Server Name="SY1_ClusterMember2"/>
</PrimaryServers>
</ServerCluster>
注: 如果您正在使用 HTTP Server plug-in for z/OS,则将忽略此处包括的 Property Name=keyringProperty Name=stashfile 元素(如果这些元素包括在该插件的 plugin-cfg.xml 文件中)。HTTP Plug-in for z/OS 插件使用在主管 HTTP Server 的 httpd.conf 文件中指定的 SSL 设置,而不会在 plugin-cfg.xml 文件中查找这些元素。
Name(每个 ServerCluster 必须有且只能有一个该属性)
将用于此组服务器的逻辑名或管理名。
LoadBalance(每个 ServerCluster 可以有零个或一个该属性)
缺省负载均衡类型是循环法。

循环法实现具有随机起始点。将随机检取第一个服务器。循环法将用于从该点开始检取服务器。此实现确保基于多个进程的 Web 服务器中,发送第一个请求到同一个 Application Server 并不会启动所有进程。

RetryInterval(每个 ServerCluster 可以有零个或一个该属性)
一个指定时间长度的整数,这段时间应该是从将服务器标记为当机的时间到插件重试连接的时间。缺省值为 60 秒。
RemoveSpecialHeaders(每个 ServerCluster 可以有零个或一个该属性)
在将请求转发到应用程序服务器之前,插件将一些特殊的头添加到请求。这些头存储关于应用程序将需要使用的请求的信息。缺省情况下,插件在添加它假定要添加的头前,将从入局请求中除去这些头。

值可以为 truefalse。如果将该属性设置为 false,则不会除去入局请求中的头,这是一个潜在的安全性漏洞。

CloneSeparatorChange(每个 ServerCluster 可以有零个或一个该属性)
某些普及型设备无法处理冒号字符(:),该字符用于分隔与会话亲缘关系联合的克隆标识。服务器组的此属性通知插件将使用加号(+)作为克隆分隔符。您必须更改应用程序服务器配置,以便应用程序服务器也使用加号来分隔克隆标识。

值可以为 truefalse

PostSizeLimit(每个 ServerCluster 可以有零个或一个该属性)
插件尝试将请求发送到应用程序服务器时所允许的请求内容最大字节数。如果接收到大于此大小的请求,则插件不会发送该请求。缺省值为 -1 个字节,表明发布大小没有限制。
[Version 6.0.1 and later] PostBufferSize(每个 ServerCluster 可以有零个或一个该属性)
指定读取 HTTP 请求内容时使用的最大缓冲区大小(以千字节计)。如果最初接收到请求的应用程序服务器无法处理该请求,则将此缓冲区中包含的数据发送给另一应用程序服务器以尝试让该应用程序服务器处理此请求。

此选项改进了插件的可用性。现在,如果所选应用程序服务器未响应,则将重试包含内容但未完成的请求。如果值设置为零,则不会缓冲和重试包含内容的请求。缺省值为 64。

Server(每个 ServerCluster 可以有一个或多个该元素)
一个 WebSphere Application Server 实例,已配置它来处理使用插件配置的路由规则路由至它的请求。该服务器应该对应于在本地机器或远程机器上运行的应用程序服务器。
Name(每个 Server 必须有且只能有一个该属性)
服务器的管理名或逻辑名。
CloneID(每个 Server 可以有零个或一个该属性) (参考web容器定制属性HttpSessionCloneId)
如果请求的 HTTP cookie 头(或 URL,如果使用 URL 重写的话)中包含此唯一标识,则只要符合所有其他路由规则,插件就会将该请求路由至此特定服务器(。如果在 Server 中未指定 CloneID,则不会对此服务器启用会话亲缘关系。

此属性将与会话亲缘关系一起使用。当设置了此属性时,插件检查入局 cookie 头或 URL 中是否有 JSESSIONID。如果找到了 JSESSIONID,则插件查找一个或多个克隆标识。如果找到了克隆标识,且与对此属性指定的值匹配,则会将请求发送到此服务器而不是均衡地加载在集群中。

如果您不打算使用会话亲缘关系,则最好从配置中除去这些克隆标识,因为设置这些标识会增加插件处理请求时的负载。如果插件中没有克隆标识,则假定会话亲缘关系未打开,并且请求将均衡地加载在集群中。

WaitForContinue(每个 Server 可以有零个或一个该属性)
指定在将请求内容发送到应用程序服务器之前,是否要使用 HTTP 1.1 100 Continue 支持。可能的属性值为 truefalse。缺省值为 false;插件在发送请求内容之前,不会等待来自应用程序服务器的 100 Continue 响应,因为这会降低性能。

对于 POST 请求,将忽略此属性,以便在应用程序服务器由于保持活动超时而关闭连接时,不会发生故障。

当配置插件以使用某些类型的代理防火墙时,请启用此功能(设置为 true)。

LoadBalanceWeight(每个 Server 可以有零个或一个该属性)
指定当插件执行加权循环法负载均衡时,与此服务器相关联的权重。服务器的开始值可以为 020 之间的任何整数。然而,对于已关闭的服务器,只应该指定零。

此属性的算法会递减服务器集群内的所有权重,直到所有权重达到零。在对特定服务器指定的权重达到零之后,在集群中的所有服务器权重为零之前,不会再将请求路由至该服务器。在所有服务器达到零之后,将复位集群中所有服务器的权重,并且该算法重新开始。

当某个服务器已关闭时,建议您将该服务器的权重设置为零。然后插件可以复位仍在运行的服务器的权重,并维持适当的负载均衡。

ConnectTimeout(每个 Server 可以有零个或一个该属性)
Server 元素的 ConnectTimeou 属性使插件可以执行与应用程序服务器的非分块连接。当插件无法联系目标以确定端口是可用还是不可用时,非分块连接是有益的。

如果未指定 ConnectTimeout 值,则插件执行分块连接,插件在操作系统超时(根据平台,它可以长达 2 分钟)前位于该连接中,并且该连接允许插件将服务器标记为不可用。值 0 导致插件执行分块连接。大于 0 的值指定您要插件等待成功连接的秒数。如果在该时间间隔后不发生连接,则插件将服务器标记为不可用并故障转移到集群中定义的另一台服务器。

ExtendedHandshake(每个 Server 可以有零个或一个该属性)
当代理防火墙在插件和应用程序服务器之间时,则使用 ExtendedHandshake 属性。在这种情况下,插件不会像期望的那样执行故障转移。

当 connect() 失败时插件标记服务器为当机。但是,当代理防火墙在插件和应用程序服务器之间时,即使后端应用程序服务器当机了,connect() 也会成功。这导致插件没有正确地故障转移到其他应用程序服务器。

插件与应用程序服务器执行某些握手以确保它在发送请求前已启动。这使插件能够在应用程序服务器当机时执行故障转移。

值可以为 truefalse

MaxConnections(每个 Server 有一个该元素)
MaxConnections 属性用于指定可以及时流经任何点上的 Web 服务器进程的、与 Application Server 的最大暂挂连接数。
例如,假设:
  • 此应用程序服务器前端有 5 个运行 IBM HTTP Server 的节点。
  • 每个节点启动 2 个进程。
  • MaxConnections 属性设置为 50。

在此示例中,应用程序服务器可以潜在地获取最多 500 个连接。(用节点数 5 乘以进程数 2,然后将得数乘以为 MaxConnections 属性指定的数字 50,得到总数 500 个连接。)

在 z/OS 平台上此属性不是必要的。z/OS 控制器与 WLM 共同动态地处理新连接。

缺省情况下,MaxConnections 设置为 -1。如果此属性设置为零或 -1,则到应用程序服务器的暂挂连接数没有限制。

Transport(每个 Server 可以有一个或多个该元素)
用于对特定 WebSphere Application Server 实例的读取和写入请求的传输。传输提供一些信息,需要这些信息来确定请求将发送至的应用程序服务器的位置。如果 Server 已将多个传输定义为使用相同协议,则将使用第一个传输。

可以将 Server 配置为具有一个非安全传输和一个使用 SSL 的传输。在此配置中,将执行匹配的入局请求协议来确定用来将请求发送到应用程序服务器的适当传输。

Hostname(每个 Transport 必须有且只能有一个该属性)
正在运行 WebSphere Application Server 实例的机器的主机名或 IP 地址。
Port(每个 Transport 必须有且只能有一个该属性)
WebSphere Application Server 实例进行侦听所使用的端口。
Protocol(每个 Transport 必须有且只能有一个该属性)
当通过此传输进行通信时要使用的协议 - HTTP 或 HTTPS。
Property(每个 Transport 可以有零个、一个或多个该元素)
当 Transport 的 Protocol 设置为 HTTPS 时,请使用此元素来提供各种初始化参数,如 password、keyring 和 stashfile。例如,包含这些元素的 plugin_cfg.xml 文件的一部分可能类似于以下内容:
<Transport Hostname="192.168.1.2" Port="9443" Protocol="HTTPS">
<Property Name="keyring" value="c:/WebSphere/AppServer/keys/keyring.kdb"/>
<Property Name="stashfile" value="c:/WebSphere/AppServer/keys/keyring.sth"/>
<Property Name="password" value="WebAS"/>
注: 使用 iKeyMan 查看 plugin-key.kdb 文件的缺省密码是 WebAS。
Name(每个 Property 必须有且只能有一个该属性)
正在定义的 Property 的名称。传输可识别的受支持名称为 keyring、stashfile 和 password。
注: password 是可以对 WebSphere HTTP for z/OS 插件指定的唯一名称。将忽略 keyring 和 stashfile(如果指定了它们)。
Value(每个 Property 必须有且只能有一个该属性)
正在定义的 Property 的值。
ServerIOTimeout
Server 元素的 ServerIOTimeout 属性使插件能够设置将请求发送至应用程序服务器以及从应用程序服务器读取响应时的超时值(以秒计)。如果未对 ServerIOTimeout 属性设置值,则插件在缺省情况下使用分块 I/O 来将请求写至应用程序服务器以及从应用程序服务器读取响应,直到 TCP 连接超时为止。例如,如果您指定:
<Server Name="server1" ServerIOTimeout=300>

在这种情况下,如果应用程序服务器停止对请求进行响应,则插件会等待 300 秒(5 分钟),然后使 TCP 连接超时。如果将 ServerIOTimeout 属性设置为合理的值,则插件能够较快地使连接超时,并在可能时将请求传送到另一个应用程序服务器。

在选择此属性的值时,请记住,应用程序服务器处理请求有时可能需要几分钟的时间。如果将 ServerIOTimeout 属性的值设置得太小,可能会导致插件将不正确的服务器错误响应发送到客户机。

ClusterAddress(每个 ServerCluster 可以有零个或一个该元素)
ClusterAddress 类似于 Server 元素,您可以在其中像对 Server 元素一样指定相同的属性和元素。差别在于,在一个 ServerCluster 中,您只能定义一个 ClusterAddress。当您因为在插件和应用程序服务器之间已具有某种类型的负载均衡器而不希望插件执行任何类型的负载均衡时,请使用 ClusterAddress。
重要: 如果您包括 ClusterAddress 标记,则您必须在该标记上包括 Name 属性。插件使用 Name 属性来使集群地址与正确的主机和端口相关联。如果您未指定 Name 属性,则插件给集群地址分配对使用相同主机和端口的服务器指定的名称。
<ClusterAddress Name="MyClusterAddr">
<Transport Hostname="192.168.1.2" Port="9080" Protocol="HTTP"/>
<Transport Hostname="192.168.1.2" Port="9443" Protocol="HTTPS">
</ClusterAddress>

如果接收到未建立亲缘关系的请求,则插件将它路由至集群地址(如果已定义)。如果已建立亲缘关系,则插件会完全绕过集群地址而将请求直接路由到克隆。如果没有为服务器集群定义集群地址,则插件会将负载均衡地分布到主服务器列表中的服务器上。

PrimaryServers(每个服务器集群可以有零个或一个该元素)
指定插件要将对此集群的请求路由至的服务器列表。如果未指定主服务器列表,则插件会将请求路由至为服务器集群定义的服务器。
BackupServers(每个服务器集群可以有零个或一个该元素)
指定在主服务器列表中指定的所有服务器都不可用时,应该将请求发送至的服务器列表。插件不会将负载均衡地分布在备份服务器上,但它会按顺序遍历该列表,直到列表中没有服务器,或直到成功发送请求并且从应用程序服务器接收到响应为止。
VirtualHostGroup
将在 HTTP Host 头中指定的一组虚拟主机名。使您能够将配置为处理相似类型请求的虚拟主机定义组合到一起。

以下是 VirtualHost Group 元素和相关联的元素及属性的示例

<VirtualHostGroup Name="Hosts">
<VirtualHost Name="www.x.com"/>
<VirtualHost Name="www.x.com:443"/>
<VirtualHost Name="*:8080"/>
<VirtualHost Name="www.x.com:*"/>
<VirtualHost Name="*:*"/>
</VirtualHostGroup>
Name(每个 VirtualHostGroup 必须有且只能有一个该属性)
将用于此组虚拟主机的逻辑名或管理名。
VirtualHost(每个 VirtualHostGroup 可以有一个或多个该元素)
用于虚拟机器或实际机器的名称,用来确定入局请求是否应该由 WebSphere Application Server 进行处理。请使用此元素来指定 HTTP Host 头中将包含的主机名,需要由应用程序服务器处理的请求应该可以到达这些主机。您可以指定入局请求将具有的特定主机名和端口,也可以对主机名和/或端口指定星号(*)。
Name(每个 VirtualHost 必须有且只能有一个该属性)
应该在 HTTP Host 头中指定以便与此 VirtualHost 成功匹配的实际名称。

值是主机名或 IP 地址与端口的组合,用冒号隔开。

您可以将插件配置为根据请求的入局 HTTP Host 头和端口将请求路由至应用程序服务器。Name 属性指定这些组合的内容。

您可以使用通配符表示此属性。唯一可接受的解决方案是将一个星号(*)表示主机名,一个星号表示端口,或使用一个星号表示这两者。用一个星号表示这两者意味着任何请求都将与此规则匹配。如果定义中未指定端口,则使用缺省 HTTP端口 80。

UriGroup
将在 HTTP 请求行上指定的一组 URI。同一个应用程序服务器必须能够处理这些 URI。路由会将入局 URI 与组中的 URI 作比较,以确定应用程序服务器是否将处理请求。

以下是 UriGroup 元素和相关联的元素及属性的示例:

<UriGroup Name="Uris">
<Uri Name="/servlet/snoop"/>
<Uri Name="/webapp/*"/>
<Uri Name="*.jsp"/>
</UriGroup>
Name(每个 UriGroup 必须有且只能有一个该属性)
用于此组 URI 的逻辑名或管理名。
Uri(每个 UriGroup 可以有一个或多个该元素)
将由 WebSphere Application Server 服务的资源的虚拟路径。每个 URI 指定需要由应用程序服务器处理的入局 URI。您可以在这些定义中使用通配符。
Name(每个 Uri 必须有且只能有一个该属性)
应该在 HTTP 请求行中指定以便与此 URI 成功匹配的实际字符串。您可以在 URI 定义中使用通配符。您可以指定将由 WebSphere Application Server 处理的规则,如 *.jsp 或 /servlet/*。当您汇编应用程序时,如果您指定启用文件服务,则仅会为 Web 应用程序生成一个带有通配符的 URI,而不考虑任何显式 servlet 映射。如果您指定按类名服务 servlet,则将生成具有 <Uri Name="Web_application_URI/servlet/*"> 的 URI。
AffinityCookie(每个 Uri 可以有零个或一个该属性) (参考server的会话管理的cookie名称)
插件在尝试确定入站请求是否具有会话亲缘关系时应该使用的 cookie 的名称。缺省值为 JSESSIONID

请参阅 CloneID 属性的描述以获取其他会话亲缘关系信息。

AffinityURLIdentifier(每个 Uri 可以有零个或一个该属性) (参考web容器定制属性SessionRewriteIdentifier)
插件在尝试确定入站请求是否具有在特定克隆的 URL 中指定的亲缘关系时应该使用的标识的名称。缺省值为 jsessionid

请参阅 CloneID 属性的描述以获取其他会话亲缘关系信息。

Route
一个请求路由规则,插件通过该规则确定入局请求是否应由 WebSphere Application Server 处理。

路由定义是插件配置的中心元素。它指定插件将如何根据请求的某些特征来处理请求。路由定义包含其他主要元素:必需的 ServerCluster 以及 VirtualHostGroup 和/或 UriGroup。

通过使用在路由的 VirtualHostGroup 和 UriGroup 中定义的信息,插件确定是否应该将 Web 服务器的入局请求发送到此路由中定义的 ServerCluster。

以下是此元素的示例:

<Route VirtualHostGroup="Hosts" UriGroup="Uris" ServerCluster="servers/>
VirtualHostGroup(每个 Route 可以有零个或一个该属性)
在确定路由时应该使用的一组虚拟主机。将入局主机头和服务器端口进行比较以确定此请求是否应由应用程序服务器处理。

可以在路由定义中省略此属性。如果未提供此属性,则在确定路由的虚拟主机匹配部分期间,每个请求都将匹配。

UriGroup(每个 Route 可以有零个或一个该属性)
用于确定路由的一组 URI。将请求的入局 URI 和此组中定义的 URI 进行比较以确定此请求是否应由应用程序服务器处理。

可以在路由定义中省略此属性。如果未提供此属性,则在确定路由的 URI 匹配部分期间,每个请求都将匹配。

ServerCluster(每个 Route 必须有且只能有一个该属性)
会将与路由成功匹配的请求发送至的集群。

应该用来处理此请求的集群。如果 URI 和虚拟主机匹配对于此路由已成功,则请求将发送到此集群内定义的某个服务器。

RequestMetrics
此元素用来确定是否启用请求度量值,以及当启用了请求度量值时,如何根据因特网协议(IP)和统一资源标识(URI)过滤器来过滤请求。

以下是此元素的示例:

<RequestMetrics armEnabled="false"  loggingEnabled="true"
			rmEnabled="false" traceLevel="PERF_DEBUG">
armEnabled(RequestMetrics 可以有零个或一个该属性)
此属性指示插件中是否启用 ARM 4 代理程序。当它设置为 true 时,将调用 ARM 4 代理程序。
注: 对于 SunOne (iPlanet) Web 服务器,obj.conf 文件中必须包含以下伪指令才能启用 ARM 4 支持:
AddLog fn="as_term"
如果未包含此伪指令,则永远不会调用 arm_stop 过程。
loggingEnabled(RequestMetrics 必须有且只能有一个该属性)
此属性指示是否在插件中启用请求度量值记录。当它设置为 true 而 traceLevel 未设置为 NONE 时,将记录请求响应时间(和其他请求信息)。当它设置为 false 时,则不会记录请求。loggingEnabled 的值取决于为系统属性 com.ibm.websphere.pmi.reqmetrics.loggingEnabled 指定的值。当未提供此系统属性时,loggingEnable 设置为 true
rmEnabled(RequestMetrics 必须有且只能有一个该属性)
此属性指示是否在插件中启用请求度量值。当它设置为 true 时,插件请求度量值将检查过滤器并将请求跟踪记录记录在插件日志文件中。如果请求通过了这些过滤器,则将执行此操作。当此属性设置为 false 时,将忽略其余的请求度量值属性。
traceLevel(RequestMetrics 必须有且只能有一个该属性)
当 rmEnabled 为 true 时,此属性指示将记录多少信息。当此属性设置为 NONE 时,不会执行任何请求日志记录。当此属性未设置为 NONE 而 loggingEnabled 设置为 true 时,在执行请求时将记录请求响应时间(和其他请求信息)。
filters(RequestMetrics 可以有零个、一个或两个该属性)
当 rmEnabled 为 true 时,filters 控制将跟踪哪些请求。
enable(每个 filter 必须有且只能有一个该属性)
当 enable 为 true 时,则该类型的过滤器已打开,并且请求必须通过该过滤器。
type(每个 filter 必须有且只能有一个该属性)
有两种类型的过滤器:SOURCE_IP(例如,客户机 IP 地址)和 URI。对于 SOURCE_IP 过滤器类型,将根据已知的 IP 地址来过滤请求。您可以使用星号(*)指定 IP 地址的掩码。如果使用星号,则星号必须总是掩码的最后一个字符,例如,127.0.0.*、127.0.* 和 127*。出于性能原因,模式逐个字符地匹配,直到在过滤器中找到星号、发生不匹配或发现过滤器为完全匹配为止。

对于 URI 过滤器类型,将根据入局 HTTP 请求的 URI 来过滤请求。用于模式匹配的规则与用于匹配 SOURCE_IP 地址过滤器的规则相同。

如果 URI 和客户机 IP 地址过滤器都已启用,则请求度量值需要匹配两种过滤器类型。如果两者都未启用,则认为所有请求都匹配。

filterValues(每个过滤器可以有一个或多个该属性)
filterValues 显示详细的过滤器信息。
value(每个 filterValue 必须有且只能有一个该属性)
为相应的过滤器类型指定过滤器值。它可以是客户机 IP 地址或 URI。

附录 会话管理的定制属性:

CloneSeparatorChange
使用此属性维护会话亲合关系。服务器的克隆标识被附加到用冒号分隔的会话标识中。在一些无线应用协议(WAP)设备中,不允许有冒号。将此属性设置成“true”,以将克隆分隔符更改为加号(+).
HttpSessionCloneId
使用此属性更改群集成员的克隆标识。在群集中,此名称必须是唯一的以维护会话亲合关系。当设置时,此名称将覆盖由 WebSphere Application Server 生成的缺省名。缺省克隆的标识符长度:8 或 9。
HttpSessionIdLength
使用此属性配置会话标识长度。不要使用非常低的值;使用低值将导致减少可能的组合数,因而增加了猜测会话标识的风险。在群集中,所有群集成员应当用相同的标识长度来进行配置。允许的范围:8 到 128。缺省长度:23。
HttpSessionReaperPollInterval
使用此属性设置除去无效会话的进程的唤醒时间间隔。缺省值是基于会话管理中的最大不活动时间间隔设置。允许的值:整数。
NoAdditionalSessionInfo
将该值设置成“true”以强制除去会话标识中不需要的信息。在 WebSphere Application Server base 版本中,不再使用克隆标识 -1;因此,设置该值时克隆标识不包含在 base 版本中。同样,非持久会话中不再使用高速缓存标识;所以当设置该值时高速缓存标识不包含在非持久会话中。
SessionIdentifierMaxLength
使用该值设置会话标识可增加的最大长度。在群集中,由于请求转到新群集成员时发生故障转移,会话管理将把新的克隆标识附加到现有克隆标识中。在大群集中,如果出于某些原因服务器更频繁地失败,那么有可能是会话标识长度大于期望的长度,它减少了 URL 的空间。因此这个属性有助于找出条件,并采用适当的操作来处理服务器的故障转移。当指定此属性时,消息将在达到指定的最大长度时进行记录。允许的值:整数。
SessionRewriteIdentifier
使用此属性更改重写 URL 时使用的密钥。缺省密钥:jsessionid。
上面的是我的项目结构,现在我想要加入开源的通义大模型,实现项目具有以下功能 自行准备本地知识库资料(如本专业相关资料内容)作为大模型本地知识库的输入 教师侧:备课与设计: 根据所提供的本地课程大纲、课程知识库文档等自动设计教学内容,包括知识讲解、实训练习与指导、时间分布等。 · 考核内容生成: 根据教学内容自动生成考核题目及参考答案,考核题目种类可多样化,根据学科设计,如计算机类可设计相关编程题和答案 · 学情数据分析: 对学生提交的答案进行自动化检测,提供错误定位与修正建议。对学生整体数据进行分析,总结知识掌握情况与教学建议。 学生侧: · 在线学习助手: 对学生的提出的问题,结合教学内容进行解答; · 实时练习评测助手: 根据学生历史练习情况,以及学生的练习要求,生成随练题目,并对练习纠错。 管理侧: 用户管理:管理员/教师/学生等用户的基本管理 课件资源管理:按学科列表教师备课产生的课件、练习等资源,可以导出。 大屏概览: · 教师使用次数统计/活跃板块(当日/本周) · 学生使用次数统计/活跃板块(当日/本周) · 教学效率指数(备课与修正耗时、课后练习设计与修正耗时、课程优化方向(如:某学科通过率持续偏低) · 学生学习效果(平均正确率趋势、知识点掌握情况,高频错误知识点等) 非功能性需求 需明确使用至少1个开源大模型作为核心技术组件; 需采用本地知识库作为输入,知识库资料总量不大于100M; 生成的内容、练习与答案与本地知识库的关联性和准确性;(对抽取知识点设计的题目验证关联性和与答案的准确性有知识点说明) 我该在哪里添加 下面我再对功能进行进一步的说明:1、首先本地知识库可以让用户自己上传(即用户自己可以控制本地知识库,但一开始会有一个默认的知识库,知识库是在项目中的某个目录中可以吗), 2、在备课与设计的功能上ai可以帮助教师设计教学内容,并且教师可以下载该教学内容 3、在考核内容生成中,考核题目同样可以进行下载,而且可以有带答案不带答案两种方式; 完整的项目结构又是怎样的,哪些内容需要更改 下面是我目前的项目结构卷 Windows-SSD 的文件夹 PATH 列表 卷序列号为 20C7-404E C:. | project_structure.txt | +---main | +---java | | \---com | | | Aiapp1Application.java | | | | | +---annotation | | | APPLoginUser.java | | | IgnoreAuth.java | | | LoginUser.java | | | | | +---config | | | InterceptorConfig.java | | | MybatisPlusConfig.java | | | MyMetaObjectHandler.java | | | | | +---controller | | | CommonController.java | | | ConfigController.java | | | DictionaryController.java | | | ExampaperController.java | | | ExamquestionController.java | | | ExamrecordController.java | | | ExamredetailsController.java | | | ExamrewrongquestionController.java | | | FileController.java | | | ForumController.java | | | JiaoshiController.java | | | KechengController.java | | | KechengLiuyanController.java | | | NewsController.java | | | UsersController.java | | | YonghuController.java | | | | | +---dao | | | CommonDao.java | | | ConfigDao.java | | | DictionaryDao.java | | | ExampaperDao.java | | | ExamquestionDao.java | | | ExamrecordDao.java | | | ExamredetailsDao.java | | | ExamrewrongquestionDao.java | | | ForumDao.java | | | JiaoshiDao.java | | | KechengDao.java | | | KechengLiuyanDao.java | | | NewsDao.java | | | TokenDao.java | | | UsersDao.java | | | YonghuDao.java | | | | | +---entity | | | | ConfigEntity.java | | | | DictionaryEntity.java | | | | EIException.java | | | | ExampaperEntity.java | | | | ExamquestionEntity.java | | | | ExamrecordEntity.java | | | | ExamredetailsEntity.java | | | | ExamrewrongquestionEntity.java | | | | ForumEntity.java | | | | JiaoshiEntity.java | | | | KechengEntity.java | | | | KechengLiuyanEntity.java | | | | NewsEntity.java | | | | TokenEntity.java | | | | UsersEntity.java | | | | YonghuEntity.java | | | | | | | +---model | | | | DictionaryModel.java | | | | ExampaperModel.java | | | | ExamquestionModel.java | | | | ExamrecordModel.java | | | | ExamredetailsModel.java | | | | ExamrewrongquestionModel.java | | | | ForumModel.java | | | | JiaoshiModel.java | | | | KechengLiuyanModel.java | | | | KechengModel.java | | | | NewsModel.java | | | | YonghuModel.java | | | | | | | +---view | | | | DictionaryView.java | | | | ExampaperView.java | | | | ExamquestionView.java | | | | ExamrecordView.java | | | | ExamredetailsView.java | | | | ExamrewrongquestionView.java | | | | ForumView.java | | | | JiaoshiView.java | | | | KechengLiuyanView.java | | | | KechengView.java | | | | NewsView.java | | | | YonghuView.java | | | | | | | \---vo | | | DictionaryVO.java | | | ExampaperVO.java | | | ExamquestionVO.java | | | ExamrecordVO.java | | | ExamredetailsVO.java | | | ExamrewrongquestionVO.java | | | ForumVO.java | | | JiaoshiVO.java | | | KechengLiuyanVO.java | | | KechengVO.java | | | NewsVO.java | | | YonghuVO.java | | | | | +---interceptor | | | AuthorizationInterceptor.java | | | | | +---model | | | \---enums | | | TypeEnum.java | | | | | +---service | | | | CommonService.java | | | | ConfigService.java | | | | DictionaryService.java | | | | ExampaperService.java | | | | ExamquestionService.java | | | | ExamrecordService.java | | | | ExamredetailsService.java | | | | ExamrewrongquestionService.java | | | | ForumService.java | | | | JiaoshiService.java | | | | KechengLiuyanService.java | | | | KechengService.java | | | | NewsService.java | | | | TokenService.java | | | | UsersService.java | | | | YonghuService.java | | | | | | | \---impl | | | CommonServiceImpl.java | | | ConfigServiceImpl.java | | | DictionaryServiceImpl.java | | | ExampaperServiceImpl.java | | | ExamquestionServiceImpl.java | | | ExamrecordServiceImpl.java | | | ExamredetailsServiceImpl.java | | | ExamrewrongquestionServiceImpl.java | | | ForumServiceImpl.java | | | JiaoshiServiceImpl.java | | | KechengLiuyanServiceImpl.java | | | KechengServiceImpl.java | | | NewsServiceImpl.java | | | TokenServiceImpl.java | | | UsersServiceImpl.java | | | YonghuServiceImpl.java | | | | | +---ServletContextListener | | | DictionaryServletContextListener.java | | | | | +---thread | | | MyThreadMethod.java | | | | | \---utils | | BaiduUtil.java | | CommonUtil.java | | FileUtil.java | | HttpClientUtils.java | | JQPageInfo.java | | MPUtil.java | | PageUtils.java | | PoiUtil.java | | Query.java | | R.java | | SpringContextUtils.java | | SQLFilter.java | | StringUtil.java | | ValidatorUtils.java | | | \---resources | | application.yml | | | +---front | | | index.html | | | | | +---css | | | bootstrap.min.css | | | common.css | | | front-kaoshi-style.css | | | homeworkPC.min.css | | | style.css | | | theme.css | | | | | +---elementui | | | | elementui.css | | | | elementui.js | | | | | | | \---fonts | | | element-icons.ttf | | | element-icons.woff | | | | | +---img | | | avator.png | | | banner.jpg | | | jianshe.png | | | jiaotong.png | | | line.jpg | | | nongye.png | | | seckilling.jpg | | | select.png | | | selectActive.png | | | unselect.png | | | weixin.png | | | yuan.png | | | zhifubao.png | | | zhongguo.png | | | | | +---js | | | bootstrap.AMapPositionPicker.js | | | bootstrap.min.js | | | config.js | | | jquery.js | | | utils.js | | | validate.js | | | vue.js | | | | | +---layui | | | | layui.all.js | | | | layui.js | | | | | | | +---css | | | | | layui.css | | | | | layui.mobile.css | | | | | | | | | \---modules | | | | | code.css | | | | | | | | | +---laydate | | | | | \---default | | | | | laydate.css | | | | | | | | | \---layer | | | | \---default | | | | icon-ext.png | | | | icon.png | | | | layer.css | | | | loading-0.gif | | | | loading-1.gif | | | | loading-2.gif | | | | | | | +---font | | | | iconfont.eot | | | | iconfont.svg | | | | iconfont.ttf | | | | iconfont.woff | | | | iconfont.woff2 | | | | | | | +---images | | | | \---face | | | | 0.gif | | | | 1.gif | | | | 10.gif | | | | 11.gif | | | | 12.gif | | | | 13.gif | | | | 14.gif | | | | 15.gif | | | | 16.gif | | | | 17.gif | | | | 18.gif | | | | 19.gif | | | | 2.gif | | | | 20.gif | | | | 21.gif | | | | 22.gif | | | | 23.gif | | | | 24.gif | | | | 25.gif | | | | 26.gif | | | | 27.gif | | | | 28.gif | | | | 29.gif | | | | 3.gif | | | | 30.gif | | | | 31.gif | | | | 32.gif | | | | 33.gif | | | | 34.gif | | | | 35.gif | | | | 36.gif | | | | 37.gif | | | | 38.gif | | | | 39.gif | | | | 4.gif | | | | 40.gif | | | | 41.gif | | | | 42.gif | | | | 43.gif | | | | 44.gif | | | | 45.gif | | | | 46.gif | | | | 47.gif | | | | 48.gif | | | | 49.gif | | | | 5.gif | | | | 50.gif | | | | 51.gif | | | | 52.gif | | | | 53.gif | | | | 54.gif | | | | 55.gif | | | | 56.gif | | | | 57.gif | | | | 58.gif | | | | 59.gif | | | | 6.gif | | | | 60.gif | | | | 61.gif | | | | 62.gif | | | | 63.gif | | | | 64.gif | | | | 65.gif | | | | 66.gif | | | | 67.gif | | | | 68.gif | | | | 69.gif | | | | 7.gif | | | | 70.gif | | | | 71.gif | | | | 8.gif | | | | 9.gif | | | | | | | \---lay | | | \---modules | | | carousel.js | | | code.js | | | colorpicker.js | | | element.js | | | flow.js | | | form.js | | | jquery.js | | | laydate.js | | | layedit.js | | | layer.js | | | laypage.js | | | laytpl.js | | | mobile.js | | | rate.js | | | slider.js | | | table.js | | | transfer.js | | | tree.js | | | upload.js | | | util.js | | | | | +---modules | | | | config.js | | | | | | | +---http | | | | http.js | | | | | | | +---layarea | | | | layarea.js | | | | | | | \---tinymce | | | | index.html | | | | tinymce.js | | | | | | | \---tinymce | | | | jquery.tinymce.min.js | | | | license.txt | | | | readme.md | | | | tinymce.js | | | | tinymce.min.js | | | | | | | +---langs | | | | readme.md | | | | zh_CN.js | | | | | | | +---plugins | | | | +---advlist | | | | | plugin.js | | | | | plugin.min.js | | | | | | | | | +---anchor | | | | | plugin.js | | | | | plugin.min.js | | | | | | | | | +---autolink | | | | | plugin.js | | | | | plugin.min.js | | | | | | | | | +---autoresize | | | | | plugin.js | | | | | plugin.min.js | | | | | | | | | +---autosave | | | | | plugin.js | | | | | plugin.min.js | | | | | | | | | +---bbcode | | | | | plugin.js | | | | | plugin.min.js | | | | | | | | | +---charmap | | | | | plugin.js | | | | | plugin.min.js | | | | | | | | | +---code | | | | | plugin.js | | | | | plugin.min.js | | | | | | | | | +---codesample | | | | | plugin.js | | | | | plugin.min.js | | | | | | | | | +---colorpicker | | | | | plugin.js | | | | | plugin.min.js | | | | | | | | | +---contextmenu | | | | | plugin.js | | | | | plugin.min.js | | | | | | | | | +---directionality | | | | | plugin.js | | | | | plugin.min.js | | | | | | | | | +---emoticons | | | | | | plugin.js | | | | | | plugin.min.js | | | | | | | | | | | \---js | | | | | emojis.js | | | | | emojis.min.js | | | | | | | | | +---fullpage | | | | | plugin.js | | | | | plugin.min.js | | | | | | | | | +---fullscreen | | | | | plugin.js | | | | | plugin.min.js | | | | | | | | | +---help | | | | | plugin.js | | | | | plugin.min.js | | | | | | | | | +---hr | | | | | plugin.js | | | | | plugin.min.js | | | | | | | | | +---image | | | | | plugin.js | | | | | plugin.min.js | | | | | | | | | +---imagetools | | | | | plugin.js | | | | | plugin.min.js | | | | | | | | | +---importcss | | | | | plugin.js | | | | | plugin.min.js | | | | | | | | | +---indent2em | | | | | plugin.js | | | | | plugin.min.js | | | | | | | | | +---insertdatetime | | | | | plugin.js | | | | | plugin.min.js | | | | | | | | | +---legacyoutput | | | | | plugin.js | | | | | plugin.min.js | | | | | | | | | +---link | | | | | plugin.js | | | | | plugin.min.js | | | | | | | | | +---lists | | | | | plugin.js | | | | | plugin.min.js | | | | | | | | | +---media | | | | | plugin.js | | | | | plugin.min.js | | | | | | | | | +---nonbreaking | | | | | plugin.js | | | | | plugin.min.js | | | | | | | | | +---noneditable | | | | | plugin.js | | | | | plugin.min.js | | | | | | | | | +---pagebreak | | | | | plugin.js | | | | | plugin.min.js | | | | | | | | | +---paste | | | | | plugin.js | | | | | plugin.min.js | | | | | | | | | +---preview | | | | | plugin.js | | | | | plugin.min.js | | | | | | | | | +---print | | | | | plugin.js | | | | | plugin.min.js | | | | | | | | | +---quickbars | | | | | plugin.js | | | | | plugin.min.js | | | | | | | | | +---save | | | | | plugin.js | | | | | plugin.min.js | | | | | | | | | +---searchreplace | | | | | plugin.js | | | | | plugin.min.js | | | | | | | | | +---spellchecker | | | | | plugin.js | | | | | plugin.min.js | | | | | | | | | +---tabfocus | | | | | plugin.js | | | | | plugin.min.js | | | | | | | | | +---table | | | | | plugin.js | | | | | plugin.min.js | | | | | | | | | +---template | | | | | plugin.js | | | | | plugin.min.js | | | | | | | | | +---textcolor | | | | | plugin.js | | | | | plugin.min.js | | | | | | | | | +---textpattern | | | | | plugin.js | | | | | plugin.min.js | | | | | | | | | +---toc | | | | | plugin.js | | | | | plugin.min.js | | | | | | | | | +---visualblocks | | | | | plugin.js | | | | | plugin.min.js | | | | | | | | | +---visualchars | | | | | plugin.js | | | | | plugin.min.js | | | | | | | | | \---wordcount | | | | plugin.js | | | | plugin.min.js | | | | | | | +---skins | | | | +---content | | | | | +---dark | | | | | | content.css | | | | | | content.min.css | | | | | | content.min.css.map | | | | | | | | | | | +---default | | | | | | content.css | | | | | | content.min.css | | | | | | content.min.css.map | | | | | | | | | | | +---document | | | | | | content.css | | | | | | content.min.css | | | | | | content.min.css.map | | | | | | | | | | | \---writer | | | | | content.css | | | | | content.min.css | | | | | content.min.css.map | | | | | | | | | \---ui | | | | +---oxide | | | | | | content.css | | | | | | content.inline.css | | | | | | content.inline.min.css | | | | | | content.inline.min.css.map | | | | | | content.min.css | | | | | | content.min.css.map | | | | | | content.mobile.css | | | | | | content.mobile.min.css | | | | | | content.mobile.min.css.map | | | | | | skin.css | | | | | | skin.min.css | | | | | | skin.min.css.map | | | | | | skin.mobile.css | | | | | | skin.mobile.min.css | | | | | | skin.mobile.min.css.map | | | | | | | | | | | \---fonts | | | | | tinymce-mobile.woff | | | | | | | | | \---oxide-dark | | | | | content.css | | | | | content.inline.css | | | | | content.inline.min.css | | | | | content.inline.min.css.map | | | | | content.min.css | | | | | content.min.css.map | | | | | content.mobile.css | | | | | content.mobile.min.css | | | | | content.mobile.min.css.map | | | | | skin.css | | | | | skin.min.css | | | | | skin.min.css.map | | | | | skin.mobile.css | | | | | skin.mobile.min.css | | | | | skin.mobile.min.css.map | | | | | | | | | \---fonts | | | | tinymce-mobile.woff | | | | | | | \---themes | | | +---mobile | | | | theme.js | | | | theme.min.js | | | | | | | \---silver | | | theme.js | | | theme.min.js | | | | | +---pages | | | +---chat | | | | chat.html | | | | | | | +---dictionary | | | | add.html | | | | detail.html | | | | list.html | | | | | | | +---exampaper | | | | add.html | | | | detail.html | | | | exam.html | | | | list.html | | | | | | | +---examquestion | | | | add.html | | | | detail.html | | | | list.html | | | | | | | +---examrecord | | | | add.html | | | | detail.html | | | | list.html | | | | | | | +---examredetails | | | | add.html | | | | detail.html | | | | list.html | | | | | | | +---examrewrongquestion | | | | add.html | | | | detail.html | | | | list.html | | | | | | | +---forum | | | | add.html | | | | detail.html | | | | list.html | | | | | | | +---home | | | | home.html | | | | | | | +---jiaoshi | | | | add.html | | | | center.html | | | | detail.html | | | | list.html | | | | register.html | | | | | | | +---kecheng | | | | add.html | | | | detail.html | | | | list.html | | | | | | | +---kechengLiuyan | | | | add.html | | | | detail.html | | | | list.html | | | | | | | +---login | | | | login.html | | | | | | | +---news | | | | add.html | | | | detail.html | | | | list.html | | | | | | | +---recharge | | | | recharge.html | | | | | | | \---yonghu | | | add.html | | | center.html | | | detail.html | | | list.html | | | register.html | | | | | \---xznstatic | | +---css | | | | bootstrap.min.css | | | | common.css | | | | element.min.css | | | | login.css | | | | public.css | | | | style.css | | | | swiper.min.css | | | | | | | \---fonts | | | element-icons.ttf | | | element-icons.woff | | | | | +---img | | | 162237296.jpg | | | 162240878.jpg | | | 19.jpg | | | 1_092ZZ2503138.jpg | | | 20.jpg | | | index_24.gif | | | index_35.gif | | | index_41.gif | | | index_44.gif | | | logo.png | | | news_list_time.jpg | | | service_btn.png | | | service_img.png | | | service_title.png | | | | | \---js | | bootstrap.min.js | | element.min.js | | index.js | | jquery-1.11.3.min.js | | jquery.SuperSlide.2.1.1.js | | swiper.min.js | | | +---img | | \---img | | back-img-bg.jpg | | front-img-bg.jpg | | logo.jpg | | | +---mapper | | CommonDao.xml | | ConfigDao.xml | | DictionaryDao.xml | | ExampaperDao.xml | | ExamquestionDao.xml | | ExamrecordDao.xml | | ExamredetailsDao.xml | | ExamrewrongquestionDao.xml | | ForumDao.xml | | JiaoshiDao.xml | | KechengDao.xml | | KechengLiuyanDao.xml | | NewsDao.xml | | TokenDao.xml | | UsersDao.xml | | YonghuDao.xml | | | +---static | | +---admin | | | | 1-install.bat | | | | 2-run.bat | | | | 3-build.bat | | | | babel.config.js | | | | package-lock.json | | | | package.json | | | | vue.config.js | | | | | | | +---dist | | | | | favicon.ico | | | | | index.html | | | | | | | | | +---css | | | | | app.381d2044.css | | | | | chunk-vendors.a72b0961.css | | | | | | | | | +---fonts | | | | | element-icons.535877f5.woff | | | | | element-icons.732389de.ttf | | | | | | | | | +---img | | | | | 404.3648f234.png | | | | | zhongguo.20798bfa.png | | | | | | | | | \---js | | | | app.b100d28f.js | | | | app.b100d28f.js.map | | | | chunk-vendors.213b68ba.js | | | | chunk-vendors.213b68ba.js.map | | | | | | | +---public | | | | favicon.ico | | | | index.html | | | | | | | \---src | | | | App.vue | | | | main.js | | | | | | | +---assets | | | | +---css | | | | | element-variables.scss | | | | | style.scss | | | | | | | | | \---img | | | | | 404.png | | | | | avator.png | | | | | bg.jpg | | | | | captcha.jpg | | | | | login.png | | | | | logo.png | | | | | password.png | | | | | role.png | | | | | username.png | | | | | | | | | \---test | | | | jianshe.png | | | | jiaotong.png | | | | nongye.png | | | | weixin.png | | | | zhifubao.png | | | | zhongguo.png | | | | | | | +---components | | | | +---common | | | | | BreadCrumbs.vue | | | | | Editor.vue | | | | | FileUpload.vue | | | | | | | | | +---home | | | | | HomeCard.vue | | | | | HomeChart.vue | | | | | HomeComment.vue | | | | | HomeProgress.vue | | | | | | | | | +---index | | | | | IndexAside.vue | | | | | IndexAsideStatic.vue | | | | | IndexAsideSub.vue | | | | | IndexHeader.vue | | | | | IndexMain.vue | | | | | | | | | \---SvgIcon | | | | index.vue | | | | | | | +---icons | | | | | index.js | | | | | svgo.yml | | | | | | | | | \---svg | | | | | 404.svg | | | | | articleEdit.svg | | | | | banner.svg | | | | | bug.svg | | | | | build.svg | | | | | cfg.svg | | | | | channel.svg | | | | | chart.svg | | | | | clipboard.svg | | | | | code.svg | | | | | component.svg | | | | | contacts.svg | | | | | dashboard.svg | | | | | date.svg | | | | | dept.svg | | | | | dict.svg | | | | | documentation.svg | | | | | download.svg | | | | | drag.svg | | | | | druid.svg | | | | | edit.svg | | | | | education.svg | | | | | email.svg | | | | | excel.svg | | | | | exit-fullscreen.svg | | | | | eye-open.svg | | | | | file.svg | | | | | form.svg | | | | | fullscreen.svg | | | | | icon.svg | | | | | international.svg | | | | | job.svg | | | | | language.svg | | | | | link.svg | | | | | list.svg | | | | | lock.svg | | | | | log.svg | | | | | logininfor.svg | | | | | menu.svg | | | | | message.svg | | | | | money.svg | | | | | monitor.svg | | | | | nested.svg | | | | | nested0.svg | | | | | online.svg | | | | | operation.svg | | | | | password.svg | | | | | password0.svg | | | | | pdf.svg | | | | | people.svg | | | | | peoples.svg | | | | | phone.svg | | | | | post.svg | | | | | qq.svg | | | | | search.svg | | | | | sender.svg | | | | | server.svg | | | | | shopping.svg | | | | | shoppingCard.svg | | | | | size.svg | | | | | skill.svg | | | | | star.svg | | | | | swagger.svg | | | | | system.svg | | | | | tab.svg | | | | | table.svg | | | | | table0.svg | | | | | task.svg | | | | | template.svg | | | | | theme.svg | | | | | tool.svg | | | | | tree-table.svg | | | | | tree.svg | | | | | user.svg | | | | | user0.svg | | | | | validCode.svg | | | | | wechat.svg | | | | | zip.svg | | | | | | | | | \---svg | | | | agricultureRegister.svg | | | | AI.svg | | | | AIDeviceLayout.svg | | | | area.svg | | | | base.svg | | | | batch.svg | | | | board.svg | | | | board1.svg | | | | boardConfig.svg | | | | cfg.svg | | | | code.svg | | | | company.svg | | | | crop.svg | | | | crops.svg | | | | dashboard.svg | | | | dataAbnormal.svg | | | | dataLack.svg | | | | dept.svg | | | | device.svg | | | | deviceMonitorData.svg | | | | dict.svg | | | | diseasesinsect.svg | | | | diseasesinsects.svg | | | | documentation.svg | | | | EIM.svg | | | | email.svg | | | | environmental.svg | | | | eye-open.svg | | | | farmingProject.svg | | | | finance.svg | | | | financeBudget.svg | | | | financeReality.svg | | | | firm.svg | | | | firms.svg | | | | harvestBatch.svg | | | | harvestDetection.svg | | | | harvestManage.svg | | | | harvestWorks.svg | | | | heavyMetalDetection.svg | | | | home.svg | | | | inspection.svg | | | | internet.svg | | | | internetActive.svg | | | | log.svg | | | | mainSystem.svg | | | | mainSystemActive.svg | | | | menu.svg | | | | monitorEquipment.svg | | | | news.svg | | | | order.svg | | | | password.svg | | | | peoples.svg | | | | pest.svg | | | | pestActive.svg | | | | pesticideResidue.svg | | | | pests.svg | | | | phone.svg | | | | plant.svg | | | | plants.svg | | | | plantsActive.svg | | | | residual.svg | | | | retroactiveCoding.svg | | | | scheme.svg | | | | source.svg | | | | sourceActive.svg | | | | system.svg | | | | task.svg | | | | tempFarm.svg | | | | traceability.svg | | | | traceabilityList.svg | | | | traceabilityStyle.svg | | | | user.svg | | | | user0.svg | | | | validCode.svg | | | | video.svg | | | | videoEquipment.svg | | | | videoKey.svg | | | | VIP.svg | | | | vipCustomized.svg | | | | warnings.svg | | | | workOrder.svg | | | | ┐┤?х╣▄└э.svg | | | | ╓╪╜Ё╩?╝ь▓т╣▄└э.svg | | | | | | | +---router | | | | router-static.js | | | | | | | +---store | | | | store.js | | | | | | | +---utils | | | | api.js | | | | base.js | | | | http.js | | | | i18n.js | | | | menu.js | | | | storage.js | | | | style.css | | | | style.js | | | | utils.js | | | | validate.js | | | | | | | \---views | | | | 404.vue | | | | center.vue | | | | home.vue | | | | index.vue | | | | login.vue | | | | pay.vue | | | | register.vue | | | | update-password.vue | | | | | | | \---modules | | | +---config | | | | add-or-update.vue | | | | list.vue | | | | | | | +---dictionary | | | | add-or-update.vue | | | | list.vue | | | | | | | +---dictionaryExampaper | | | | add-or-update.vue | | | | list.vue | | | | | | | +---dictionaryExamquestion | | | | add-or-update.vue | | | | list.vue | | | | | | | +---dictionaryForumState | | | | add-or-update.vue | | | | list.vue | | | | | | | +---dictionaryKecheng | | | | add-or-update.vue | | | | list.vue | | | | | | | +---dictionaryNews | | | | add-or-update.vue | | | | list.vue | | | | | | | +---dictionarySex | | | | add-or-update.vue | | | | list.vue | | | | | | | +---exampaper | | | | add-or-update.vue | | | | exam.vue | | | | list.vue | | | | | | | +---examquestion | | | | add-or-update.vue | | | | list.vue | | | | | | | +---examrecord | | | | add-or-update.vue | | | | list.vue | | | | | | | +---examredetails | | | | add-or-update.vue | | | | list.vue | | | | | | | +---examrewrongquestion | | | | add-or-update.vue | | | | list.vue | | | | | | | +---forum | | | | add-or-update.vue | | | | list.vue | | | | | | | +---jiaoshi | | | | add-or-update.vue | | | | list.vue | | | | | | | +---kecheng | | | | add-or-update.vue | | | | list.vue | | | | | | | +---kechengLiuyan | | | | add-or-update.vue | | | | list.vue | | | | | | | +---news | | | | add-or-update.vue | | | | list.vue | | | | | | | +---users | | | | add-or-update.vue | | | | list.vue | | | | | | | \---yonghu | | | add-or-update.vue | | | list.vue | | | | | \---upload | | a.txt | | config1.jpg | | config2.jpg | | config3.jpg | | file.rar | | jiaoshi.xls | | jiaoshi1.jpg | | jiaoshi2.jpg | | jiaoshi3.jpg | | jiaoshi4.jpg | | jiaoshi5.jpg | | jiaoshi6.jpg | | kecheng1.jpg | | kecheng2.jpg | | kecheng3.jpg | | kecheng4.jpg | | kecheng5.jpg | | kecheng6.jpg | | music.mp3 | | news1.jpg | | news2.jpg | | news3.jpg | | news4.jpg | | news5.jpg | | news6.jpg | | video.mp4 | | yonghu1.jpg | | yonghu2.jpg | | yonghu3.jpg | | | \---templates \---test \---java \---com Aiapp1ApplicationTests.java
最新发布
07-15
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值