- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们有一个在 Tomcat 7.0.56 上运行的简单 Web 应用程序。现在我们想用我们的自己的身份验证领域。
public class SpecialAuth extends DataSourceRealm{
@Override
public Principal authenticate(String username, String credentials){
....
}
}
这个是在war里面的/META-INF/context.xml里面定义的
<Context>
<Realm className="some.package.SpecialAuth" dataSourceName="jdbc/MySQL" />
</Context>
SpecialAuth.class 放在哪里?
我们所期望的只是在我们的 war 中拥有 SpecialAuth.class,但随后我们在启动时遇到了以下异常
Caused by: java.lang.ClassNotFoundException: some.package.BackOfficeAuth
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
....
如果我们制作一个 jar,将其放入 $TOMCAT/lib 中,一切正常。
但这不是解决方案!这意味着每次我处理此类时,我都必须接触我的 tomcat 服务器并且无法使用正常部署。
如何在不一直接触tomcat的情况下使用内置的身份验证机制ß
最佳答案
正如你所说,我不喜欢你的回答 :) 所以我所做的(我 100% 确定你不喜欢它)是将领域设置为可能的肮脏方式,但现在我可以运行它在一个被触及的tomcat上。经过 163 次验收测试后,似乎没有任何问题。
public final class ContextListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent event) {
ServletContext servletContext = event.getServletContext();
TomcatContextManipulator tomcat = new TomcatContextManipulator(servletContext);
tomcat.applyRealm(new MyOwnRealm());
}
}
.
public class TomcatContextManipulator {
private static final String EXPEXCTED_TOMCAT_VERSION = "7.0.52.0";
private ApplicationContextFacade servletContext;
/**
* @param servletContext must be of type {@link ApplicationContextFacade}
*/
public TomcatContextManipulator(ServletContext servletContext) {
checkTomcatVersion();
ensureEquals(servletContext.getClass(), ApplicationContextFacade.class, "class of servletContext");
this.servletContext = (ApplicationContextFacade) servletContext;
}
/**
* checks if the correct version of tomcat is in use, throws {@link IllegalStateException} if not
*/
private void checkTomcatVersion() {
// we use several internal parts of tomcat (for example with reflection)
// by doing this we bind ourself hardly to a explicit version
ensureEquals(EXPEXCTED_TOMCAT_VERSION, ServerInfo.getServerNumber(), "Tomcat-Server-Version");
}
/**
* overrides the existing realm with the given on
*/
public void applyRealm(Realm realm) {
ensureNotNull(realm, "realm");
ApplicationContext applicationContext = (ApplicationContext) ReflectionUtil.get(servletContext, "context");
StandardContext standardContext = (StandardContext) ReflectionUtil.get(applicationContext, "context");
standardContext.setRealm(realm);
}
}
注意:
关于java - 与Tomcat的 war 如何交付Realm?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28669268/
我已经在 Google 页面速度上测试了我的网站,我发现我需要优化我的 css 文件。但在 Google 文档中,仅针对小型 css 文件进行回复。 这是我测试网站时出现的消息: 优化以下内容的 CS
我优化了以下链接的 CSS 代码。但它仍然给出优化 css 传递的消息。 http://fonts.googleapis.com/css?family=Droid+Sans%7CUbuntu+Cond
我有一个用 Clojure 编写的桌面应用程序,它受 JVM 启动时间的影响很大,非常适合 ClojureScript。它作为 JVM 的 jar 文件提供,ClojureScript/JavaScr
我正在创建一个新服务,为此我有一个包含状态字段的数据库条目 (Mongo),我需要根据当前时间更新该字段,例如,开始时间设置为两点几个小时后,我需要在数据库中将状态从 CREATED -> START
我们构建的网站具有公共(public)(非安全)区域和安全(通过 HTTPS 交付)区域,并且我们使用 jQuery 库。 最近我建议我们使用 Google CDN 进行 jQuery 交付。我的一些
我正在尝试将 Varnish 缓存响应分块...(有可能,对吧?) 我有以下情况: 1-缓存很干净,可以使用(服务 Varnish 重新启动) 2-首次访问www.mywebsite.com/page
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 5 年前。 Improve this qu
我正在开发一个数据关键型移动应用程序来向服务器发送消息。为了利用 MQTT 的轻量级特性,KEEP_ALIVE_INTERVAL 保持在最大值 > 60 秒。但我想确保数据包无论如何都能送达。目前我使
我的本地通知有问题:如果设备处于关闭状态或更改手机日期,通知将保留排队并与下一个通知一起触发。为什么? 因为需要非常关心通知的日期..如何保证通知的正确传递? 我们应该把删除过期通知的代码放在哪里
在将第一个有效负载作为 mdm: 发送后,我们能够获得状态为空闲的响应。现在我们要发送一个简单的设备锁负载。我们按照完全相同的过程发送有效载荷,但返回的响应是空白的。 我们正在按照以下方式使用证书:1
我在 Resources\Images 目录中有一个包含大量 Assets (图像)的 .NET MAUI 项目,这些 Assets 应部署到 Google Play 商店。这意味着生成的 aab 包
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 8 年前。 Improve
我记得有人告诉我 gzip 压缩的内容没有缓存在某些浏览器上? 这是真的? 是否有任何其他原因我不应该使用 htaccess 压缩我的内容(页面、javascript 和 css 文件)? 最佳答案
如果我将 .Net Framework 安装文件与我的应用程序一起包含(安装过程由我们自己的技术人员完成),则无需事先安装任何框架即可安装在干净的 Windows(XP SP2/SP3 或 Vista
我已经成功使用 SAXON HE 9.5.1-5 一段时间了。我们正在对平台中的某些版本的组件进行全面升级,其中包括迁移到 Saxon 9.8.0-8使用该版本代码失败。以下内容位于我们的 Sprin
使用页面速度洞察时,我收到此警报 Eliminate render-blocking JavaScript and CSS in above-the-fold content Your page ha
所以我不幸地将我们创建的这个专有 ActiveX 控件嵌入到网页中,以便它从我们的服务器下载代码并在必要时安装。 我们的 ActiveX 需要许多其他文件,这些文件需要与 activex 控件本身一起
我一直在通过 Google 的网站速度测试器运行我的网站 ( https://developers.google.com/speed/pagespeed/insights/ ) 并尝试解决所有发现的问
Google 建议在 head 中使用非常重要的 CSS inline 和内部的其他 CSS . 这在我脑海中提出了几个问题: 如何在两个文件中确定 CSS 的优先级。该页面的所有内容看起来都很重要
所以我通过 Google 的 PageSpeed Insights 运行我的网站它告诉我可以通过延迟加载非关键资源来改进 CSS 交付。特别是它提到了包含很棒的字体: 我想我可以通过简单地将它放在结
我是一名优秀的程序员,十分优秀!