对ACEGI中FilterChainProxy进行性能调优

Acegi 各过滤的解析(一) 演示实例 博文链接:https://melin.iteye.com/blog/161950 立即下载

一般情况下,在ACEGI中队filterChainProxy如下配置

    <bean id="filterChainProxy"

          class="org.acegisecurity.util.FilterChainProxy">

        <property name="filterInvocationDefinitionSource">

            <value>

                CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON

                PATTERN_TYPE_APACHE_ANT

                /**=httpSessionContextIntegrationFilter,captchaValidationProcessingFilter,

authenticationProcessingFilter,rememberMeProcessingFilter,anonymousProcessingFilter,

logoutFilter,channelProcessingFilter,basicProcessingFilter,securityContextHolderAwareRequestFilter,

exceptionTranslationFilter,filterInvocationInterceptor

            </value>                      

        </property>

</bean>

当系统中受保护的Resource过多时,会出现这样的一个问题,页面加载速度明显变慢了,特别是在用户登录系统后。为什么这么说呢,我们先分析下filterInvocationInterceptor(即org.acegisecurity.intercept.web.FilterSecurityInterceptor)的工作原理便可知道一二。

在FilterSecurityInterceptor的父类AbstractSecurityInterceptor中使用beforeInvocation方法对用户访问的资源进行抉择,判断用户是否有访问权限,这里主要是对URL进行判断,在URL转发之前判断该用户是否有访问该URL的权限。这样一来因为filterInvocationInterceptor对所有路径进行过滤上面的(/**)设置,包括静态图片文件,css文件,flash文件等,这些url都要经过FilterSecurityInterceptor的判断,这样势必影响页面加载速度。那为什么登陆后系统会明显变慢了,因为匿名用户时,ACEGI读取的匿名用户的Resource列表为空,虽然也对所有的URL进行了权限判断,但页面加载并不显得慢。经过上面的分析,尝试了作了下面的修改,把每个Filter需要过滤的URL单独写,有公用的写成一行,示例如下。作了这样的优化,页面加载的速度有了明显的提升。

 

    <bean id="filterChainProxy"

          class="org.acegisecurity.util.FilterChainProxy">

        <property name="filterInvocationDefinitionSource">

            <value>

                CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON

                PATTERN_TYPE_APACHE_ANT                

/j_acegi_security_check=httpSessionContextIntegrationFilter,captchaValidationProcessingFilter,

authenticationProcessingFilter,exceptionTranslationFilter,filterInvocationInterceptor

                /j_acegi_logout=httpSessionContextIntegrationFilter,rememberMeProcessingFilter,

anonymousProcessingFilter,logoutFilter,basicProcessingFilter,securityContextHolderAwareRequestFilter,

exceptionTranslationFilter,filterInvocationInterceptor

                /**/*.html=httpSessionContextIntegrationFilter,rememberMeProcessingFilter,anonymousProcessingFilter,

basicProcessingFilter,securityContextHolderAwareRequestFilter,exceptionTranslationFilter,filterInvocationInterceptor

                /**/*.htm=httpSessionContextIntegrationFilter,rememberMeProcessingFilter,anonymousProcessingFilter,

basicProcessingFilter,securityContextHolderAwareRequestFilter,exceptionTranslationFilter,filterInvocationInterceptor

                /**/*.jsp=httpSessionContextIntegrationFilter,rememberMeProcessingFilter,anonymousProcessingFilter,

basicProcessingFilter,securityContextHolderAwareRequestFilter,exceptionTranslationFilter,filterInvocationInterceptor

                /**/*.do=httpSessionContextIntegrationFilter,rememberMeProcessingFilter,anonymousProcessingFilter,

basicProcessingFilter,securityContextHolderAwareRequestFilter,exceptionTranslationFilter,filterInvocationInterceptor

                /**/*.ajax=httpSessionContextIntegrationFilter,rememberMeProcessingFilter,anonymousProcessingFilter,

basicProcessingFilter,securityContextHolderAwareRequestFilter,ajaxExceptionTranslationFilter,filterInvocationInterceptor

            </value>                  

        </property>

</bean>

  value部分一行显示不下,我手动折行了

 
acegi认证,授权 学习acegi的第一步, <bean id="filterChainProxy" class="org.acegisecurity.util.FilterChainProxy"> <property name="filterInvocationDefinitionSource"> <value> PATTERN_TYPE_APACHE_ANT /**=httpSessionContextIntegrationFilter,basicProcessingFilter,exceptionTranslationFilter,filterInvocationInterceptor </value> </property> </bean> <bean id="httpSessionContextIntegrationFilter" class="org.acegisecurity.context.HttpSessionContextIntegrationFilter"> <property name="allowSessionCreation" value="false" /> </bean> <bean id="basicProcessingFilter" class="org.acegisecurity.ui.basicauth.BasicProcessingFilter"> <property name="authenticationManager" ref="authenticationManager" /> <property name="authenticationEntryPoint" ref="basicProcessingFilterEntryPoint" /> </bean> <bean id="basicProcessingFilterEntryPoint" class="org.acegisecurity.ui.basicauth.BasicProcessingFilterEntryPoint"> <property name="realmName" value="Acegi First Demo Realm" /> </bean> 立即下载

相关推荐

Altium Designer许可证冲突?手把手教你用Windows防火墙彻底禁止AD联网(附详细截图)

本文详细介绍了如何通过Windows防火墙精准管控Altium Designer的网络权限,解决许可证冲突问题。通过配置入站和出站规则,彻底阻断AD的联网行为,提升软件运行效率。适用于需要稳定使用Altium Designer的工程师,附有详细截图和高级验证方法。

weixin_38170137的博客 423

Acegi配置实例

1、在web.xml中 contextConfigLocation /WEB-INF/context/applicationContext-*.xml Acegi Filter Chain Proxy org.springframework.web.filter.DelegatingFilte...

weisong0127的博客 210

小红书高时效推荐系统背后的技术升级

在小红书 APP 中,推荐系统的实效性对推荐效果有着特别重要的影响,特别是作为 UGC 平台,小红书的推荐系统如果能更快地捕捉用户与笔记之间的变化和联系,就能够给推荐带来更好的效果。在2021年上半年,首页推荐的召回、粗排、精排的主要模块都保持在天级更新的状态,我们通过持续迭代,将召回 CF 渠道、召回索引更新、召回模型/粗精排模型的训练都做到了分钟级更新,为首页推荐的分发效率带来飞跃式提升,并给业务侧带来非常显著的收益。 小红书站内“最近一天内发布的新笔记”在首页的曝光占比一直很高,这段时间更是快速

REDtech_1024的博客 3521

关于Acegi配置文件中filterChainProxy的属性filterInvocationDefinitionSource的解析问题

今天研究acegi时遇到一个问题,filterChainProxy类中的filterInvocationDefinitionSource是FilterInvocationDefinitionSource类型,而在配置文件中传入了一个String类型的值。其间怎么转化,没弄明白,源码中也没有找到。但是在网上搜到这样一个帖子,原理解释的很明白。原帖地址:http://www.javaeye.com/t

Michael的专栏 3172

QTabWidget动态标签页管理:从代码创建到UI设计的实战指南

本文深入探讨了QTabWidget动态标签页管理的实战技巧,涵盖从纯代码创建到UI设计器布局的两种核心方法。详细讲解了如何动态添加、插入、关闭标签页,并管理其内容与生命周期。文章还提供了标签页精细化控制、界面优化(如设置图标、样式表)以及构建简易多文档编辑器的进阶实战案例,帮助开发者灵活应对数据监控、多文档编辑等复杂界面需求。

omega的博客 866

Reeds-Shepp曲线公式推导及代码实现-第三部分(共三部分)

根据原始起点的坐标和航向,将上一小节计算出来的局部进行整体的平移和旋转(与归一化的步骤刚好相反),最终得到全局路径的轨迹。根据计算出来的路径,选择路径最短的轨迹(也可根据我们实际的需要定制选优规则),作为最终的轨迹输出。Reeds-Shepp曲线公式推导及代码实现-第一部分(共三部分)Reeds-Shepp曲线公式推导及代码实现-第二部分(共三部分)的值进行等步长插值,得到每段轨迹对应的生成一系列插值距离列表。根据上一步生成的插值距离列表的值,计算其对应的局部位姿值。后,我们需要根据字段类型(

jianmo的博客 1088

spring中的acegi

spring中的Acegi Acegi作为web项目的一种资源保护安全机制,已经得到广泛应用。配置也十分简单,受先在web.xml加入下段代码,为其工作提供入口 Acegi Filter Chain Proxy org.acegisecurity.util.FilterToBeanProxy targetClass org.

qwtfps的专栏 1484

基于Transformer的CFD代理模型:AeroTransformer原理、实现与优化

计算流体动力学(CFD)仿真是航空航天、汽车工程等领域的关键技术,但其高计算成本限制了设计优化效率。代理模型通过机器学习方法学习输入参数与流场输出间的映射关系,能实现秒级预测,大幅加速仿真流程。Transformer架构凭借其全局注意力机制,能有效建模流场中的长程物理关联,克服了传统卷积神经网络在捕捉全局依赖上的局限。通过预训练与微调策略,模型能先在大规模多样化数据集上学习通用流体规律,再针对特定任务快速适配,显著提升了小样本下的泛化能力与工程实用价值。AeroTransformer项目正是这一技术路线的典

weixin_33509203的博客 358

spring2.0 security与acegi的结合配置

一、web.xml的配置(摘自:http://blog.youkuaiyun.com/anyoneking/article/details/1748317) (1)  FilterToBeanProxy    Acegi通过实现了Filter接口的FilterToBeanProxy提供一种特殊的使用Servlet Filter的方式,它委托Spring 中的Bean -- FilterChainProxy

shoubuliaolebu的专栏 1898

【已解决】App unavailable Unfortunately, Claude is only available in certain countries and regions

App unavailable Unfortunately, Claude is only available in certain countries and regions right now. We will soon publish a list of supported locations on our website.

weixin_43941438的博客 3万+

BOE CHPI协议解析:高速显示驱动的核心技术

本文深入解析了BOE CHPI协议,这是一种为高分辨率、高刷新率显示面板设计的时钟嵌入式高速点对点接口技术。文章详细阐述了其三层架构(物理层、链路层、协议层)、核心机制(如链路训练与BCC通道)以及如何通过高速串行差分传输解决大尺寸屏幕内部数据传输的带宽与干扰难题,是驱动8K、窄边框等高端显示应用的关键核心技术。

m9n0o的博客 544

使用 Acegi 保护 Java 应用程序

第 1 部分: 架构概览和安全过滤器 Acegi Security System 是一种功能强大并易于使用的替代性方案,使您不必再为 Java 企业应用程序编写大量的安全代码。虽然它专门针对使用 Spring 框架编写的应用程序,但是任何类型的 Java 应用程序都没有理由不去使用 Acegi。这份共分三部分的系列文章详细介绍了 Acegi,并展示了如何使用它保护简单的企业应用程序以及...

466

C# + NAudio:构建支持实时音频处理的语音聊天应用(含回声消除)

本文介绍了如何利用C#和NAudio库开发实时语音聊天应用,重点实现回声消除功能。首先概述了NAudio库在音频处理中的作用,包括音频录制、播放和实时处理能力。然后详细讲解了构建基础语音聊天应用的过程,包括麦克风录制和扬声器播放的实现。接着深入探讨了回声消除的原理和实现方法,提出通过比较麦克风输入和扬声器输出的音频信号来消除回声,并给出了核心代码示例。最后,文章还讨论了性能优化方向,如多线程处理和网络传输扩展。该方案为开发高质量实时语音应用提供了实用参考。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1009

学习《Spring in action 》第七章 Note.

  AuthenticationProviderManager, 有ProviderManager必然就要有Provider了。Provider有好几种: DAO, Cas, Jaas, LDAP, Remote。 常用的DAO Provider需要1) UserDetailService用于检索用户。Spring Security实现了一个memory的,一个JDBC的UserDetai...

dahui 157

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

springMVC各个Filter的用法!

springMVC各个过滤器的用法 1.springMVC filter整体结构; 2.GenericFilterBean过滤器; 3.HiddnHttpMethodFilter过滤器; 4.HttpPutFormContentFilter过滤器; 5.RequestContextFilter过滤器; 6.DelegatingFilterProxy过滤器。

火舞狂沙 4159

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Spring Acegi鉴权管理之基础模式(BASIC)

Acegi久负盛名,这个家伙是一个spring中广泛使用的认证和安全工具,最初由spring社区爱好者发起,目的是为spring应用提供一个安全服务,比如用户认证及授权等。后来spring官方觉得这个东西很不错,就收编了,并且在2006年发布了spring官方的1.0版本。虽然是基于Acegi,但springsecurity已经在原有基础上增加了很多新的特性进来。为了能够方便一窥Acegi的真容...

甘谷天蚕网络技术有限公司 429

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

acegi 安全系统的配置

第一步:在web.xml中的配置   1、filter Acegi Filter Chain Proxy org.acegisecurity.util.FilterToBeanProxy targetClass org.acegisecurity.util.FilterChainProxy(FilterChainProxy包含了处理认证过程的filter列表,每个fi

wangpei930228的博客 619

org.apache.catalina.core.StandardContext filterStart 严重: Exception starting filter Acegi Filter Chain Proxy

<br />2010-7-9 19:52:31 org.apache.catalina.core.StandardContext filterStart<br />严重: Exception starting filter Acegi Filter Chain Proxy<br />javax.servlet.ServletException: Bean context must contain at least one bean of type org.acegisecurity.util.FilterC

yingwen_lv625的专栏 1万+

java500内部服务器错误_HTTP状态 500 - 内部服务器错误类型 异常报告 消息 Servlet[springmvc]的Servlet.init()引发异常 描述 服务器遇到一个意外的情...

HTTP状态 500 - 内部服务器错误类型 异常报告消息 Servlet[springmvc]的Servlet.init()引发异常描述 服务器遇到一个意外的情况,阻止它完成请求。例外情况javax.servlet.ServletException: Servlet[springmvc]的Servlet.init()引发异常org.apache.catalina.authenticator.Au...

weixin_35714577的博客 3508

SSH整合之could not initialize proxy异常解决方案

org.apache.jasper.JasperException: could not initialize proxy - no Session - Class: org.hibernate.proxy.AbstractLazyInitializerFile: AbstractLazyInitializer.javaMethod: initialize错误原因:由于在Hibernate初始化D...

weixin_30747253的博客 500

webSphere 部署项目时,访问报错:Error 500: javax.servlet.ServletException: SRVE0207E: Uncaught initialization

前提: 一个普通maven项目,在本地用Tomcat运行没有任何问题,但是放到 webSphere 测试环境上,访问时就报如下错误: Error 500: javax.servlet.ServletException: SRVE0207E: Uncaught initialization exception created by servlet 尝试解决: 各种折腾都无...

gebozhedao的博客 6558

Error 500: javax.servlet.ServletException:SRVE0207E:解决方案

WAS部署应用访问报错 "Error 500: javax.servlet.ServletException:SRVE0207E: Uncaught initialization exception created by servlet" 场景: 在was 8.5.5.12 中部署war包,启动后访问web页面,返回报错:Error 500: javax.servlet.ServletExcep...

范一刀的博客 1万+
上一篇: liferay 4.2.2 启动分析
dancewing
博客等级 码龄23年 0粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值