小编cha*_*tle的帖子

获取Jersey ResourceFilterFactory中的实际参数值

我想使用Jersey在我的REST服务中实现自定义授权.此自定义授权检查方法的注释以及方法接收的实际参数.

我的jax-rs注释方法如下:

@GET
@Path("customers")
@Requires(Role.CustomerManager)
public Customer getCustomer(@ParseFromQueryString @CheckPermission final Customer customer) {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

@ParseFromQueryString是一个注释,指示Jersey(通过Injectable提供程序)Customer从查询字符串中解组a .代码如下:

public class QueryStringCustomerInjectable implements Injectable<Customer> {
  public Customer getValue() {
    final Customer customer = new Customer();
    // ... a UriInfo was injected using the @Context annotation
    // ... extract parameters from QueryString and use setters
    return customer;
  }
}
Run Code Online (Sandbox Code Playgroud)

@CheckPermission注释指示我的自定义authoriser该权限是对客户进行检查.有些用户可以访问某些客户的信息.类似地,@Requires注释扮演调用者应具有的角色.这些不是java的安全角色(字符串),而是它们是枚举值.

使用Jersey ResourceDebuggingFilter作为起点,我已经能够知道将调用哪个方法.但是,我仍然没有想出如何确定实际使用哪些参数来调用该方法.

在我的头脑中,我可以想到两个工作:

  1. 使用Guice + Jersey的Method拦截器.
  2. 编码这个逻辑QueryStringCustomerInjectable,但这看起来有点草率.这会是一个做得太多的课.

然而,我真的 …

java rest authorization jax-rs jersey

19
推荐指数
1
解决办法
1344
查看次数

Java Mutation测试与Maven的集成

我们的项目将整合突变测试作为其构建周期的一部分.目前,我们正处于评估阶段.

到目前为止,我只发现Jester有一个maven-plugin(Grester).我无法找到其他可用的突变测试工具(Jumble,μJava和Javalanche).当然,我们需要完整的maven集成.我们不想重新发明轮子(即,为我们选择的工具编写我们自己的maven插件).

你知道那些Jumble,μJava和Javalanche的maven-plugins吗?我已经google了,就像我说的那样,只找到了Grester.此外,如果你知道任何其他java的变异测试工具,任何提示将不胜感激.

java unit-testing mutation-testing maven

12
推荐指数
1
解决办法
2512
查看次数

Guice 3.0 + Tomcat 7.0 = ClassLoader内存泄漏

我知道这个问题已经存在至少3年(问题92),但我仍然不满意它的当前状态.我也知道如果你在重新部署后重新启动(如Guice + Tomcat潜在的内存泄漏中所建议的那样),这不会影响Tomcat .

我的问题是我OutOfMemoryError: PermGen在重新部署后遇到了错误.请注意,我没有明确使用google-collections,我只使用Guice 3.0(通过maven).在分析堆转储之后,我仍然看到线程com.google.inject.internal.Finalizer仍处于活动状态,保持对Tomcat的WebappClassLoader的引用,从而阻碍了垃圾收集.

如果我实际上需要重新部署而不重新启动并使用Guice,该怎么办?我有什么选择?

java tomcat memory-leaks guice

11
推荐指数
1
解决办法
2167
查看次数

CXF和Google Guice使用JAX-RS + JAX-WS

我想将CXF与Google Guice集成.我已经在我的项目中使用Guice,我想避免添加额外的依赖项.

CXF是我的选择,因为其中一个要求是能够为服务的用户提供XML,JSON,JSONP和SOAP接口,而不需要重复的代码(现在我们有特定于SOAP的类,对于XML我们使用Struts和for JSON我们编写了自己的解析器,我知道,我也觉得很脏.

无论如何,afaik,CXF可以满足这个要求,所以我似乎被CXF困住了.

关于如何将Guice与CXF集成的任何想法,指示或建议?我想扩展CXFNonSpringJaxrsServlet课程并将Guice归入其中,但它似乎在某种程度上我会做其他人已经做过的事情.

cxf jax-rs jax-ws guice

7
推荐指数
1
解决办法
2920
查看次数

大项目的依赖管理

我在一个相当大的项目中工作.我们有很多项目,每个项目都有依赖项.我们使用maven,通常我们没有任何问题.因此,在没有提供太多细节的情况下,想象一下对于给定项目,例如,tps-reports依赖性部分pom.xml看起来像:

  <name>TPS-Reports</name>
  <description>
   TPS Reports frontend.
  </description>
  <dependencies>
   <dependency>
    <groupId>com.initech</groupId>
    <artifactId>gui-components</artifactId>
    <version>2.5</version>
   </dependency>
   <dependency>
    <groupId>com.initech</groupId>
    <artifactId>multithreading</artifactId>
    <version>3.7</version>
   </dependency>
   <dependency>
    <groupId>com.initech</groupId>
    <artifactId>utils</artifactId>
    <version>2.3.0.0</version>
   </dependency>
   <dependency>
    <!-- TODO: update to new version -->
    <groupId>com.initech</groupId>
    <artifactId>object-pooling</artifactId>
    <version>1.9.3.1</version>
   </dependency>
  </dependencies>
Run Code Online (Sandbox Code Playgroud)

现在,Initech拥有大量依赖于项目的项目object-pooling,这些项目还依赖于许多其他更多组件,例如(utilsmultithreading).

生活对object-pooling开发者来说是好事.这是一个非常稳定的模块,一切顺利.与任何其他模块一样,它也具有依赖性.object-pooling开发人员都是绅士和公平的女士,每当他们发现一个关键的错误时,他们都会更新所有依赖的项目object-pooling.

现在,版本1.9.3.1object-pooling稳定,没有已知的严重的安全漏洞.开发人员很难添加大量新功能,经过一段时间后,他们发布了版本2.0.0.0.当然,之间1.9.3.12.0.0.0,有中间的版本(例如1.9.3.1,1.9.3.2,1.9.4.0,1.9.5.3等等).正如我所说,生活对object-pooling开发者来说是好事.版本2.0.0.0具有新功能和许多修复.

然而,对于tps-reports开发人员来说,地狱即将到来.他们已经使用 …

dependencies project-management maven-2 build maven

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

用布尔双重检查成语

采取以下java代码:

public class SomeClass {
  private boolean initialized = false;
  private final List<String> someList; 

  public SomeClass() {
    someList = new ConcurrentLinkedQueue<String>();
  }

  public void doSomeProcessing() {
    // do some stuff...
    // check if the list has been initialized
    if (!initialized) {
      synchronized(this) {
        if (!initialized) {
          // invoke a webservice that takes a lot of time
          final List<String> wsResult = invokeWebService();
          someList.addAll(wsResult);
          initialized = true;
        }
      } 
    }
    // list is initialized        
    for (final String s : someList) {
      // …
Run Code Online (Sandbox Code Playgroud)

java concurrency multithreading synchronization memory-model

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

使用java的-XX:OnError选项

我写了以下代码:

public class JavaErrorTest {    
    public static void main(String[] args) {
        if (1 < 2) {
            throw new OutOfMemoryError();
        }
    }       
}
Run Code Online (Sandbox Code Playgroud)

然后我调用它:

$ java -XX:OnError="echo %p" JavaErrorTest
Run Code Online (Sandbox Code Playgroud)

在我的控制台中,我得到以下内容:

Exception in thread "main" java.lang.OutOfMemoryError
    at JavaErrorTest.main(JavaErrorTest.java:5)
Run Code Online (Sandbox Code Playgroud)

不知何故,我怀疑-XX:OnErrorJVM选项没有被选中.我正在使用cygwin调用java,使用jdk 1.6.0_30,在Windows 64位下运行.

我究竟做错了什么?

编辑

以下命令产生相同的输出:

$ java -XX:OnOutOfMemoryError="echo %p" JavaErrorTest
Run Code Online (Sandbox Code Playgroud)

java jvm

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

Quartz Enterprise Scheduler:自行安排的Job

我正在使用Quartz Enterprise Job Scheduler(1.8.3).作业配置来自几个xml文件,我们有一个特殊的作业,可以检测这些xml文件中的更改并重新计划作业.这很有用,但问题是我还需要这个"调度程序工作"来重新安排自己.一旦这个工作重新安排自己,由于某种原因,我看到它被执行了很多次.但我没有看到任何例外.

我已经复制并隔离了这个问题.这将是切入点:

public class App {
    public static void main(final String[] args) throws ParseException, SchedulerException {
    // get the scheduler from the factory
    final Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();

    // start the scheduler
    scheduler.start();

    // schedule the job to run every 20 seconds
    final JobDetail jobDetail = new JobDetail("jobname", "groupname", TestJob.class);        
    final Trigger trigger = new CronTrigger("triggername", "groupname", "*/20 * * * * ?");

    // set the scheduler in the job data map, so the job can re-configure …
Run Code Online (Sandbox Code Playgroud)

java quartz-scheduler job-scheduling

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