小编hyp*_*man的帖子

@EJBs注释有什么作用?

我大致知道这个构造的作用:它创建一个SomeType EJB并将该对象注入另一个EJB.

 @EJB(name="name1")
 SomeType someVariable
Run Code Online (Sandbox Code Playgroud)

现在我有一个类似于这样开始的类:(我给出所有类级别的注释,即使我认为只有@EJBs相关的)

@Remote(SomeClass.class)
@Stateless(name="someName")
@EJBs({@EJB(name="name1",beanInterface=Type1.class),
       @EJB(name="name2",beanInterface=Type2.class)})
@TransactionAttribute(TransactionAttributeType.REQUIRED)
@TransactionManagement(TransactionManagementType.CONTAINER)
public class X extends Y{ 
  //code
Run Code Online (Sandbox Code Playgroud)

这是做什么的@EJB?他们可能从JNDI获取或创建"name1"......对象,但他们在哪里放置结果?我没有看到.lookup任何附近的电话,但代码库是巨大的,所以我不太确定这一点.

奖金问题:我认为这两个@Transaction注释只是重复默认值?

更新:此时多个人声称@EJBs是专有扩展.它不是.它是java EE5的核心部分.有关详细信息,请参阅JavaDoc..它只是个别@EJB注释的容器.

我相信声称这些EJB注释的每个人都会进行查找.我只是想知道这次查找结果会发生什么.

java ejb java-ee

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

RAII何时优于GC?

考虑这个用C++演示RAII的简单类(从我的脑海中开始):

class X {
public:
    X() {
      fp = fopen("whatever", "r");
      if (fp == NULL) 
        throw some_exception();
    }

    ~X() {
        if (fclose(fp) != 0){
            // An error.  Now what?
        }
    }
private:
    FILE *fp;
    X(X const&) = delete;
    X(X&&) = delete;
    X& operator=(X const&) = delete;
    X& operator=(X&&) = delete;
}
Run Code Online (Sandbox Code Playgroud)

我不能在析构函数中抛出异常.我有错误,但无法报告.这个例子非常通用:我不仅可以使用文件,还可以使用例如posix线程,图形资源,...我注意到例如维基百科RAII页面如何扫描地毯下的整个问题:http:// en .wikipedia.org /维基/ Resource_Acquisition_Is_Initialization

在我看来,RAII只有在保证无故障发生的情况下才有用.我知道这个属性的唯一资源是内存.现在在我看来,例如Boehm相当令人信服地揭穿手动内存管理的想法在任何常见情况下都是一个好主意,那么C++使用RAII的方式的优势在哪里呢?

是的,我知道GC在C++世界中有点异端;-)

c++ raii

14
推荐指数
3
解决办法
1809
查看次数

在企业环境中分发maven settings.xml文件

我们想在我们公司部署maven,我们想知道将文件settings.xml和相关数据分发给每个开发人员的最佳方法是什么.我们看到这些限制:

  • 我们想要" 包含电池 "策略':设置正确环境的最小工作量.
  • 我们有漫游配置文件,因此我们无法在配置文件中存储完整的maven存储库缓存(需要在配置文件外部为此缓存创建文件夹)
  • 我们希望在不破坏本地修改的情况下对该文件进行少量更新(因此不会覆盖,但是例如可以使用subversion合并)
  • 我们只想使用开发人员风格的工具,所以我们不依赖于windows版本的所有相关开销来推动一点变化(使用GPO或SMS推送此文件不是首选)

那么贵公司如何处理这个问题呢?

java maven-2

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

借用亲子关系检查器

我有下面的代码生成在其注释中标记的错误消息。我想我理解这个消息:我想借用父级两次:一次用于查找其子级,一次作为子级的参数(并且错误中的可变/不可变单词不相关)。我必须证明当Child它修改时它不会消失Parent。但我不知道该怎么做。我可以做Rc<Child>任何事,但那似乎很浪费,所以我希望增加一些生命周期就能达到目的。

struct Parent {
    used: i32,
    child: Child,
}

struct Child {
    dummy: i32,
}

impl Child { 
    fn use_parent(&mut self, parent: &mut Parent) {
        // use both child and parent
        parent.used += self.dummy;
        self.dummy += 1;
    }
}
fn main() {
    let parent = Parent {
        used: 0,
        child: Child {
            dummy: 1
        }
    };
    //Error: cannot borrow immutable local variable `parent` as mutable
    parent.child.use_parent(&mut parent);
}
Run Code Online (Sandbox Code Playgroud)

rust borrow-checker

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

checkstyle JavadocType 仅在接口上

当我们淹没在数以千计的 checkstyle 规则中时,我想放宽它们(如果只是为了阻止开发人员忽略它们)。我想放宽的规则之一是JavaDocType检查:只有在接口上,javadoc 才应该是强制性的,而不是在其他公共类上。不幸的是,我没有看到“接口” Scope。有没有人建议在不写我们自己的支票的情况下使这成为可能?

java interface checkstyle

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

java 缓存超时

我们有一个简单但非常常用的缓存,由 ConcurrentHashMap 实现。现在我们希望定期(例如每 15 分钟)刷新所有值。

我想要这样的代码:

 private void regularCacheCleanup() {
        final long now = System.currentTimeMillis();
        final long delta = now - cacheCleanupLastTime;
        if (delta < 0 || delta > 15 * 60 * 1000) {
            cacheCleanupLastTime = now;
            clearCache();
        }
  }
Run Code Online (Sandbox Code Playgroud)

除了它应该是:

  • 线程安全
  • 如果不清除缓存,则非阻塞且性能极高
  • 除了 java.* 类之外没有任何依赖项(因此没有 Google CacheBuilder)
  • 坚如磐石;-)
  • 无法启动新线程

现在我想在 ThreadLocal 中实现一个短定时器。当这个时间到期时,将以同步的方式检查真实计时器。然而,这是一个非常多的代码,所以一个更简单的想法会很好。

java caching nonblocking

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