小编jsp*_*att的帖子

嵌入式Jetty 7服务器的基本身份验证,没有web.xml文件

我有一个作为服务运行的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)

jetty basic-authentication

8
推荐指数
1
解决办法
2万
查看次数

如何使用错误的父/子模型解组xml消息

我试图将第三方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干净地处理这个烂摊子的任何想法,或者我应该自己解析它?

jax-rs jaxb

6
推荐指数
1
解决办法
4274
查看次数

如何使用Ec2MultiRegionSnitch将Cassandra配置为跨多个EC2区域工作

我是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)

amazon-ec2 cassandra

6
推荐指数
1
解决办法
6335
查看次数

无法使Jersey JAX-RS资源与Proguard混淆的REST服务一起使用

请原谅这篇文章的篇幅.我试图获取其中的所有有用信息,并预测人们可能会遇到的问题.

我有一系列与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)

jersey proguard

3
推荐指数
1
解决办法
1906
查看次数