问题列表 - 第26248页

如何编写Java EE/EJB Singleton?

前一天,我的应用程序是一个EAR,包含一个WAR,一个EJB JAR和几个实用程序JAR文件.我在其中一个实用程序文件中有一个POJO单例类,它工作正常,并且全世界都很好:

EAR
 |--- WAR
 |--- EJB JAR
 |--- Util 1 JAR
 |--- Util 2 JAR
 |--- etc.
Run Code Online (Sandbox Code Playgroud)

然后我创建了第二个WAR,并发现(艰难的方式)每个WAR都有自己的ClassLoader,因此每个WAR都会看到不同的单例,并且事情从那里分解.这不太好.

EAR
 |--- WAR 1
 |--- WAR 2
 |--- EJB JAR
 |--- Util 1 JAR
 |--- Util 2 JAR
 |--- etc.
Run Code Online (Sandbox Code Playgroud)

那么,我正在寻找一种方法来创建一个可以跨WAR工作的Java单例对象(跨ClassLoaders?).在@Singleton我发现JBoss 5.1似乎不支持该注释(作为EJB 3.1的一部分添加)之前,EJB注释似乎很有希望.我错过了什么 - 我可以使用@SingletonJBoss 5.1吗?目前无法升级到JBoss AS 6.

或者,我也很高兴不必使用EJB来实现我的单例.我还能做些什么来解决这个问题?基本上,我需要一个半应用程序范围的*钩子到一大堆其他对象,如各种缓存数据和应用程序配置信息.作为最后的手段,我已经考虑将我的两个WAR合并为一个,但这将是非常地狱般的.

*含义:基本上可以在某一层之上的任何地方使用 现在,主要是在我的WAR中 - 视图和控制器(松散意义上).

编辑:我应该真的称它为Java EE而不是J2EE,不应该吗?


编辑2:非常感谢@Yishai的所有帮助.经过一些反复试验后,看起来我已经想出如何在JBoss 5下使用单个ClassLoader来解决这个问题.我在下面详细说明了这个问题,希望其他人也会发现这个问题很有用.

注意,这与JBoss 4下的这一点完全不同(参见Yishai的回答或下面的链接).

不是jboss-web.xml为每个WAR 编写一个,而是为了一个jboss.xmlear-EJB EJB ,而是jboss-classloading.xml在每个WAR中放置一个文件,与DD(web.xml)位于同一位置.内容jboss-classloading.xml应该是: …

java singleton ejb java-ee jboss5.x

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

是否有表示运算符类型的.NET类?

我想做以下事情:

*OperatorType* o = *OperatorType*.GreaterThan;

int i = 50;

int increment = -1;

int l = 0;

for(i; i o l; i = i + increment)
{
    //code
}
Run Code Online (Sandbox Code Playgroud)

这个概念可以使用eval()在javascript中进行克制...但是这个想法是有一个循环,可以根据运行时设置的值前进或后退.

这可能吗?

谢谢

.net c#

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

iPhone/Objective-C:NSMutableArray writeToFile不会写入文件.始终返回NO

我试图序列2 NSMutableArraysNSObjects实现的NSCoding协议.但是它适用于one(stacks)而不适用于其他(cards).我有以下代码块:

-(void) saveCards
{
    NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString* documentsDirectory = [paths objectAtIndex:0];

    NSString* cardsFile = [documentsDirectory stringByAppendingPathComponent:@"cards.state"];
    NSString* stacksFile = [documentsDirectory stringByAppendingPathComponent:@"stacks.state"];
    BOOL c = [rootStack.cards writeToFile:cardsFile atomically:YES];
    BOOL s = [rootStack.stacks writeToFile:stacksFile atomically:YES];
}
Run Code Online (Sandbox Code Playgroud)

我使用调试器逐步执行此方法,并在最后两行代码运行后,检查两个BOOLs 的值.BOOL cNOBOOL sYES.该stacks数组实际上是空的(这可能是它工作的原因).该cards数组有内容.为什么包含内容的数组失败了?我无法弄清楚这一点.我查看了SOF上的大量线程,他们每个人都说这个问题是因为他们写的文件的保护级别阻止了他们编写.这不是我的问题,因为我正在写入Documents文件夹.我已经加倍并且检查过,既不是rootStack.cards也不rootStack.stacks是.而且我已经检查过卡片确实有内容.

以下是我的Notecard类的编码器方法(我添加了所有的if声明作为尝试解决此问题的一部分,以确保尝试编码nil值不会破坏某些东西):

-(void) encodeWithCoder:(NSCoder *)encoder
{
    if(text)
        [encoder encodeObject:text …
Run Code Online (Sandbox Code Playgroud)

iphone objective-c ipad

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

如何将多个哈希值合并到Perl中的一个哈希中?

在Perl中,我该如何获得:

$VAR1 = { '999' => { '998' => [ '908', '906', '0', '998', '907' ] } }; 
$VAR1 = { '999' => { '991' => [ '913', '920', '918', '998', '916', '919', '917', '915', '912', '914' ] } }; 
$VAR1 = { '999' => { '996' => [] } }; 
$VAR1 = { '999' => { '995' => [] } }; 
$VAR1 = { '999' => { '994' => [] } }; 
$VAR1 = { '999' => { '993' …
Run Code Online (Sandbox Code Playgroud)

perl hash merge perl-data-structures

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

基于触摸的客户端的CSS下拉列表.纯CSS下拉是否会灭绝?

我的公司开始将iPad添加为浏览器,我必须测试我的工作.这让我想到了......

由于基于触摸的客户端没有:悬停状态纯CSS下拉列表会消失吗?

然后我想即使你添加一些javascript来点击菜单弹出菜单...当菜单项(扩展到另一个菜单)也是一个链接时会发生什么.如何区分单击以查看菜单或单击以转到该链接?

当基于触摸的客户端变得无处不在时,下拉菜单会发生什么?那还有解决方法吗?

html css touchscreen ipad

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

StandardOutput.EndOfStream挂起

我正在我的C#应用​​程序中启动一个运行控制台应用程序的进程.我重定向了标准输入和输出,并且能够通过StandardOutput.ReadLine()读取几行.我确信我已正确配置ProcessStartInfo.

控制台应用程序启动时会输出几行(以"marker"行结尾),然后等待输入.收到输入后,它再次输出几行(再次以"标记"行结束),依此类推.我的目的是从它读取行直到我收到"标记"行,此时我知道发送适当的输入字符串.

我的问题是,经过几次迭代,程序挂起.暂停调试器往往会将挂起置于对StandardOutput.EndOfStream的调用中.以下测试代码就是这种情况:

while (!mProcess.StandardOutput.EndOfStream) // Program hangs here.
{
    Console.WriteLine(mProcess.StandardOutput.ReadLine());
}
Run Code Online (Sandbox Code Playgroud)

当我测试"marker"行时,如果我在读取行后尝试访问StandardOutput.EndOfStream,我会得到同样的挂起:

string line = "";
while (!isMarker(line))
{
    line = mProcess.StandardOutput.ReadLine();
}
bool eos = mProcess.StandardOutput.EndOfStream; // Program hangs here.
Run Code Online (Sandbox Code Playgroud)

我可能会做什么导致这个属性如此可怕地执行?

c# hang

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

SQLAlchemy关系过滤器?

我可不可以做

table.relationship.filter( column = value )
Run Code Online (Sandbox Code Playgroud)

获取关系的行子集?和同样的order_by

python sqlalchemy

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

为什么不使用XIB文件的好理由?

有没有什么好的理由可以解释为什么我不应该使用具有高度自定义UI和广泛动画以及超低内存占用需求的XIB/NIB文件?

作为初学者,我从XIB开始.然后我发现我无法做到其中的一切.它开始变得非常难以按我希望的方式定制东西.所以最后,我扔掉了所有的XIB,并以编程方式完成了所有操作.

所以当有人问我XIB是否合适时,我通常会说:是的,如果你想制作糟糕乏味的界面并且不太关心性能,请继续.但是还有什么可能是不使用XIB的原因?

我是唯一一个因为这个原因而喜欢以编程方式执行所有操作的iPhone开发人员吗?

iphone xib nib

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

从坐标确定市区

我正在寻找一个允许从坐标中找到市区名称的数据库。我曾尝试使用 Google Maps 或 Open Street Map 来查找该信息,但它们似乎无法提供这些数据。

我特别想找一个德国的数据库

干杯,迈克尔

google-maps geolocation coordinates openstreetmap

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

友善和派生阶级

假设我有以下类层次结构:

class Base
{
  protected:

    virtual void foo() = 0;

    friend class Other;
};

class Derived : public Base
{
  protected:

    void foo() { /* Some implementation */ };
};

class Other
{
  public:

    void bar()
    {
      Derived* a = new Derived();

      a->foo(); // Compiler error: foo() is protected within this context
    };
};
Run Code Online (Sandbox Code Playgroud)

我想我也可以改变它a->Base::foo()但是因为foo()Base课堂上是纯粹的虚拟,所以Derived::foo()无论如何呼叫都将导致呼叫.

但是,编译器似乎拒绝了a->foo().我想这是合乎逻辑的,但我不能理解为什么.我错过了什么吗?不能(不应该)它处理这种特殊情况?

谢谢.

c++ inheritance compiler-errors friend

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