Glassfish 4.0无法执行CDI [英] Cannot perform CDI in Glassfish 4.0

查看:129
本文介绍了Glassfish 4.0无法执行CDI的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用Glassfish 4.0的最新升级版本运行一个特别简单的测试案例。我已经尝试将META-INF / beans.xml放在所有可能的组合中,包括它自己的jar在WEB-INF / lib中。

我得到的最好的是以下错误布局+后面列出的源代码:

 警告:尝试加载Bean类WEB-INF.classes.com时出错。 example.cdibug.Test:java.lang.ClassNotFoundException:WEB-INF.classes.com.example.cdibug.Test 
警告:尝试加载Bean类WEB-INF.classes.com.example.cdibug时出错。 Foo:java.lang.ClassNotFoundException:WEB-INF.classes.com.example.cdibug.Foo
警告:尝试加载Bean类时出错WEB-INF.classes.com.example.cdibug.App:java。 lang.ClassNotFoundException:WEB-INF.classes.com.example.cdibug.App
INFO:使用Application在servlet mapping / rest / *上注册名为com.example.cdibug.App的Jersey servlet应用程序同名的班级。
信息:在[/ cdibug]
加载应用程序[cdibug] INFO:cdibug已成功部署在106毫秒内。

布局:

  $ jar tvf cdibug.war 
0 Tue May 07 23:19:48 HST 2013 META-INF /
68 Tue May 07 23:19:48 HST 2013 META-INF / MANIFEST .MF
0星期二07五月23:14:20 HST 2013 META-INF / beans.xml
0星期二五月07 23:19:32 HST 2013 WEB-INF /
0五月二月07 23:18:58 HST 2013 WEB-INF / classes /
0 Tue May 07 22:51:54 HST 2013 WEB-INF / classes / com /
0 Tue May 07 22:51:54 HST 2013 WEB-INF / classes / com / example /
0 Tue May 07 23:09:34 HST 2013 WEB-INF / classes / com / example / cdibug /
174 Tue May 07 22:54 :28 HST 2013 WEB-INF / classes / com / example / cdibug / Test.java
171 Tue May 07 22:54:04 HST 2013 WEB-INF / classes / com / example / cdibug / App.java
309 Tue May 07 22:56:30 HST 2013 WEB-INF / classes / com / example / cdibug / Foo.java
398 Tue May 07 23:06:00 HST 2013 WEB-INF / classes / com / example / cdibug / Test.class
304 Tue May 07 23:06:00 HST 2013 WEB-INF / classes / com / example / cdibug / App.class
634 Tue May 07 23:06:00 HST 2013 WEB-INF / classes / com / example / cdibug / Foo.class
$

beans.xml 的来源:

  $ cat META-INF / beans.xml#EMPTY 0字节



< App.java的来源:

  $ cat WEB-INF /classes/com/example/cdibug/App.java 
package com.example.cdibug;

import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;

@ApplicationPath(/ rest)
public class App extends Application {
}

Test.java 的来源:

  $ cat WEB-INF / classes / com / example / cdibug / Test.java 
package com.example.cdibug;

import javax.ws.rs.GET;
import javax.ws.rs.Path;

@Path(/ test)
public class Test {
@GET
public String greet(){
returnhello;


来源 Foo.java

  $ cat WEB-INF / classes / com / example / cdibug / Foo.java 
package com.example.cdibug;

import java.util.logging.Logger;

import javax.enterprise.context.ApplicationScoped;

@ApplicationScoped
public class Foo {
public Foo(){
System.out.println(stdout:Foo());
System.err.println(stderr:Foo());
Logger.getGlobal()。info(global_log:Foo());
}
}


解决方案

它是eclipse kepler m6捆绑版本中的一个bug。它在4.0.0-b87


下工作正常

I am trying to run a particularly simple test case using the latest promoted build of Glassfish 4.0. I have tried placing META-INF/beans.xml in all possible permutations including its own jar in WEB-INF/lib

The best I get is the following errors with a layout+sources that are listed after it:

WARNING: Error while trying to load Bean Class WEB-INF.classes.com.example.cdibug.Test : java.lang.ClassNotFoundException: WEB-INF.classes.com.example.cdibug.Test
WARNING: Error while trying to load Bean Class WEB-INF.classes.com.example.cdibug.Foo : java.lang.ClassNotFoundException: WEB-INF.classes.com.example.cdibug.Foo
WARNING: Error while trying to load Bean Class WEB-INF.classes.com.example.cdibug.App : java.lang.ClassNotFoundException: WEB-INF.classes.com.example.cdibug.App
INFO: Registering the Jersey servlet application, named com.example.cdibug.App, at the servlet mapping /rest/*, with the Application class of the same name.
INFO: Loading application [cdibug] at [/cdibug]
INFO: cdibug was successfully deployed in 106 milliseconds.

Layout:

$ jar tvf cdibug.war 
     0 Tue May 07 23:19:48 HST 2013 META-INF/
    68 Tue May 07 23:19:48 HST 2013 META-INF/MANIFEST.MF
     0 Tue May 07 23:14:20 HST 2013 META-INF/beans.xml
     0 Tue May 07 23:19:32 HST 2013 WEB-INF/
     0 Tue May 07 23:18:58 HST 2013 WEB-INF/classes/
     0 Tue May 07 22:51:54 HST 2013 WEB-INF/classes/com/
     0 Tue May 07 22:51:54 HST 2013 WEB-INF/classes/com/example/
     0 Tue May 07 23:09:34 HST 2013 WEB-INF/classes/com/example/cdibug/
   174 Tue May 07 22:54:28 HST 2013 WEB-INF/classes/com/example/cdibug/Test.java
   171 Tue May 07 22:54:04 HST 2013 WEB-INF/classes/com/example/cdibug/App.java
   309 Tue May 07 22:56:30 HST 2013 WEB-INF/classes/com/example/cdibug/Foo.java
   398 Tue May 07 23:06:00 HST 2013 WEB-INF/classes/com/example/cdibug/Test.class
   304 Tue May 07 23:06:00 HST 2013 WEB-INF/classes/com/example/cdibug/App.class
   634 Tue May 07 23:06:00 HST 2013 WEB-INF/classes/com/example/cdibug/Foo.class
$

Source of beans.xml:

$ cat META-INF/beans.xml # EMPTY 0 bytes

Source of App.java:

$ cat WEB-INF/classes/com/example/cdibug/App.java 
package com.example.cdibug;

import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;

@ApplicationPath("/rest")
public class App extends Application {
}

Source of Test.java:

$ cat WEB-INF/classes/com/example/cdibug/Test.java 
package com.example.cdibug;

import javax.ws.rs.GET;
import javax.ws.rs.Path;

@Path("/test")
public class Test {
  @GET
  public String greet () {
    return "hello";
  }
}

Source of Foo.java:

$ cat WEB-INF/classes/com/example/cdibug/Foo.java 
package com.example.cdibug;

import java.util.logging.Logger;

import javax.enterprise.context.ApplicationScoped;

@ApplicationScoped
public class Foo {
  public Foo () {
    System.out.println("stdout: Foo()");
    System.err.println("stderr: Foo()");
    Logger.getGlobal().info("global_log: Foo()");
  }
}

解决方案

it was a bug in the version bundled with eclipse kepler m6. it works fine under 4.0.0-b87

这篇关于Glassfish 4.0无法执行CDI的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆