我有一个作为服务运行的Jetty 7的嵌入式实现,并且想要为servlet添加没有web.xml文件的基本身份验证.
我使用此处描述的步骤创建了我的凭据
我以为我可以创建服务器,使用基本身份验证创建安全处理程序并将HashLoginService附加到安全管理器.但我显然遗漏了几件事,因为我从来没有得到凭证的提示.
下面是代码.任何帮助将不胜感激.
server = new Server(port);
server.addConnector(getSslChannelConnector(securePort));
server.setGracefulShutdown(1000);
server.setStopAtShutdown(true);
// create the context handler for the server
ServletContextHandler sch = new ServletContextHandler(server, WEBAPP_CONTEXT);
// attach the security handler to it that has basic authentication
sch.setSecurityHandler(getSecurityHandler());
// define the processing servlet.
sch.addServlet(new ServletHolder(new ProcessingServlet()), "/process");
.
.
private SecurityHandler getSecurityHandler() {
// add authentication
Constraint constraint = new Constraint(Constraint.__BASIC_AUTH,"user");
constraint.setAuthenticate(true);
constraint.setRoles(new String[]{"user","admin"});
// map the security constraint to the root path.
ConstraintMapping cm = new ConstraintMapping(); …Run Code Online (Sandbox Code Playgroud) 我试图将第三方XML有效负载解组到一个类中.问题是有效负载具有父/子关系,根节点,父节点和子节点都具有相同的元素名称.以下是有效负载的示例.
<?xml version="1.0" encoding="UTF-8"?>
<Directory>
<id>2</id>
<name>Media</name>
<Directory>
<id>5</id>
<name>Default_Content</name>
<Directory>
<id>9</id>
<name>Images</name>
</Directory>
<Directory>
<id>8</id>
<name>Icons</name>
</Directory>
<Directory>
<id>6</id>
<name>Additional_Content</name>
</Directory>
</Directory>
<Directory>
<id>12</id>
<name>IC</name>
</Directory>
</Directory>
Run Code Online (Sandbox Code Playgroud)
所以我试图注释一个类,以便JAXB/JAX-RS可以将其解组为有用的东西.
我尝试过这样的事情
@XmlRootElement(name="Directory")
public class Directory {
private int id;
private String name;
@XmlElement(name="Directory");
private List<Directory> directories = new ArrayList<Directory>();
}
Run Code Online (Sandbox Code Playgroud)
但是,可以预见的是,IllegalAnnotationException由于具有两个具有相同名称的属性,它会抛出一个.
关于如何使用JAXB/JAX-RS干净地处理这个烂摊子的任何想法,或者我应该自己解析它?
我是Cassandra的新手,他的任务是在多个地区的EC2环境中启动并运行,这样如果整个EC2区域瘫痪,我们的应用程序将继续以愉快的方式运行.我已经阅读了尽可能多的关于Ec2MultiRegionSnitch的文档,并且已经停止了.我正在运行cassandra 1.0.10.
我的问题如下:
1)当我启动bin/cassandra时,我收到错误:无法在JMX中启动注册mbean.虽然我可以在任何节点上运行bin/nodetool -h ring,但我得到了一个健康系统所期望的显示.我已将mx4j库添加到我的cassandra部署中.我可以尝试删除我想的.
2)当我然后启动bin/cassandra-cli -h时,我能够创建密钥空间,如下所示:
CREATE KEYSPACE mykeyspace
WITH placement_strategy = 'org.apache.cassandra.locator.NetworkTopologyStrategy'
and strategy_options = {us-east-1:2,us-west-1:2};
Run Code Online (Sandbox Code Playgroud)
3)运行'use mykeyspace'后,我可以创建一个列系列,如下所示:
CREATE COLUMN FAMILY people
WITH comparator=UTF8Type AND key_validation_class=UTF8Type AND
default_validation_class=UTF8Type AND column_metadata=[{column_name:FIRST_NAME,validation_class:UTF8Type},
{column_name:LAST_NAME,validation_class:UTF8Type},
{column_name:EMAIL,validation_class:UTF8Type},
{column_name:LOGIN,validation_class:UTF8Type, index_type: KEYS}];
Run Code Online (Sandbox Code Playgroud)
4)在我这样做之后,我可以在4个节点中的任何一个上运行bin/cassandra-cli -h,运行使用mykeyspace; 描述; 并且每个节点都正确地描述了mykeyspace,包括列族和种子列表.
5)但是当我尝试执行一个简单的:
set people['1']['FIRST_NAME'] = 'John';
Run Code Online (Sandbox Code Playgroud)
我得到一个堆栈跟踪如下:
null
UnavailableException()
at org.apache.cassandra.thrift.Cassandra$insert_result.read(Cassandra.java:15206)
at org.apache.cassandra.thrift.Cassandra$Client.recv_insert(Cassandra.java:858)
at org.apache.cassandra.thrift.Cassandra$Client.insert(Cassandra.java:830)
at org.apache.cassandra.cli.CliClient.executeSet(CliClient.java:901)
Run Code Online (Sandbox Code Playgroud)
我的配置:
我已经为端口22,7000,7199和9160执行了ec2-authorize
我的集群中有4个节点:以下每个区域中有一个节点:AvailabilityZones.
us-east-1:us-east-1a (initial_token: 0)
us-east-1:us-east-1c (initial_token: 85070591730234615865843651857942052864)
us-west-1:us-west-1a (initial_token: 1)
us-west-1:us-west-1c (initial_token: 85070591730234615865843651857942052865)
Run Code Online (Sandbox Code Playgroud)
每个EC2实例都与公共IP地址相关联.
在每个节点中,我已经配置了cassandra.yaml,如下所示:
seeds: <set to …Run Code Online (Sandbox Code Playgroud) 请原谅这篇文章的篇幅.我试图获取其中的所有有用信息,并预测人们可能会遇到的问题.
我有一系列与Jersey一起实现并在Jetty中运行的RESTful Web服务. 使用jar文件的未混淆版本,一切正常.但是当我与Proguard混淆时,我收到了500错误消息
The ResourceConfig instance does not contain any root resource classes.
Run Code Online (Sandbox Code Playgroud)
作为我的软件包的一部分,我有一个非常简单的ping服务,所以我可以测试连接和基本的Jersey配置.
我用jersey启动jetty的代码如下所示:
ServletHolder sh = new ServletHolder(ServletContainer.class);
sh.setInitParameter("com.sun.jersey.config.property.packages", "com.sw.pr.hq");
sh.setInitParameter("com.sun.jersey.config.property.resourceConfigClass",
"com.sun.jersey.api.core.PackagesResourceConfig");
ServletContextHandler sch = new ServletContextHandler(server, "/pr");
sch.addServlet(sh, "/");
Run Code Online (Sandbox Code Playgroud)
当我尝试从浏览器中点击我的ping URL时,调试日志显示以下行:
Jan 13, 2011 9:33:35 AM com.sun.jersey.api.core.PackagesResourceConfig init
[java] INFO: Scanning for root resource and provider classes in the packages:
[java] com.sw.pr.hq
Run Code Online (Sandbox Code Playgroud)
因此我认为jetty已正确配置并正常运行.就像我说的,这个应用程序的未混淆版本工作正常.
我尝试ping时出现的堆栈跟踪显示在此帖子的底部,但最令人不安的是:
[java] SEVERE: The ResourceConfig instance does not contain any root resource classes.
[java] 2011-01-13 09:33:35.585:WARN:/pr:unavailable
Run Code Online (Sandbox Code Playgroud)
我的proguard配置看起来像这样(为简洁起见删除了注释).请注意,当我执行jar -tvf obfuscated.jar调用时,我在那里看到类com.sw.pr.HQServerResource.class文件.
-dontskipnonpubliclibraryclasses
-renamesourcefileattribute SourceFile …Run Code Online (Sandbox Code Playgroud)