Glassfish 嵌入式 + maven cobertura 插件
Posted
技术标签:
【中文标题】Glassfish 嵌入式 + maven cobertura 插件【英文标题】:Glassfish embedded + maven cobertura plugin 【发布时间】:2012-02-28 15:10:16 【问题描述】:我通过以下方式使用嵌入式 glassfish:
public static void createContainer() throws IOException
File target = new File("target/classes");
Map<String, Object> properties = new HashMap<String, Object>();
properties.put(EJBContainer.MODULES, target);
properties.put("org.glassfish.ejb.embedded.glassfish.installation.root",
"/opt/glassfish3/glassfish");
container = EJBContainer.createEJBContainer(properties);
context = container.getContext();
@AfterSuite(alwaysRun = true)
public static void closeContainer() throws NamingException
// close container
// I use this method to lookup
public static <T> T lookupBy(Class<T> type)
try
return (T) context.lookup("java:global/classes/" + type.getSimpleName());
catch (NamingException ex)
throw new RuntimeException(ex);
问题在于嵌入式 glassfish 使用“target/classes”中的类,而 maven cobertura 使用“target/generated-classes/cobertura”。然后,第一次运行测试没问题,但是在第二次运行 cobertura 时,我收到 java.lang.RuntimeException: javax.naming.NamingException (可能是因为 cobertura 正在处理“target/generated-classes/cobertura ” 而 glassfish 正在处理“目标/类”)。
有什么办法解决这个问题???
【问题讨论】:
【参考方案1】:我对 cobertura 和 glassfish-embedded 进行了同样的实验。这是我解决它的设置。
我只是将 glassfish-embedded-all 和 cobertura 包含在没有特定选项的 maven 依赖项中。我不使用 EJBContainer 属性 EJBContainer.MODULES,glassfish-embedded 在正常或 cobertura 阶段自行查找 ejb 类。
但是,JNDI 可移植名称在普通和 cobertura 大小写之间发生变化。所以我调整了你的 lookupBy 方法来管理这两种情况。
最后是我的代码:
public static void createContainer() throws IOException
container = EJBContainer.createEJBContainer();
context = container.getContext();
MyServiceLocal ejb = lookupBy(MyServiceLocal.class,MyServiceImpl.class);
public static <T> T lookupBy(Class<T> type, Class service)
try
return (T) context.lookup("java:global/classes/" + service.getSimpleName());
catch (NamingException ex)
// lookup with cobertura
return (T) context.lookup("java:global/cobertura/" + service.getSimpleName() + "!" + type.getName());
【讨论】:
以上是关于Glassfish 嵌入式 + maven cobertura 插件的主要内容,如果未能解决你的问题,请参考以下文章
《安富莱嵌入式周报》第282期:CMSIS-DSP手册引入计算图,树莓派单片机RP2040超频到1GHz,COBS字节编码算法,纯手工为PS1打造全新亚克力外壳
《安富莱嵌入式周报》第282期:CMSIS-DSP手册引入计算图,树莓派单片机RP2040超频到1GHz,COBS字节编码算法,纯手工为PS1打造全新亚克力外壳