小编lam*_*noy的帖子

Guice Singleton静态注射模式

我是Google Guice的新手并且从概念上理解依赖注入,但是在尝试将其合并到我的应用程序中时遇到了问题.我的具体问题是关于Singleton对象.这是一个例子:

首先,我的Module类,它将重的Singleton Connection接口绑定到它的实现.

public class MyModule extends AbstractModule {
    @Override
    protected void configure() {
        bind(Connection.class).to(MyConnection.class).asEagerSingleton();
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,在我的main方法中,我实例化我的应用程序服务器并注入Connection:

public class MyApplication {
    @Inject
    public MyApplication(Connection cxn) {

    }

    public static void main(String[] args) {
        Injector injector = Guice.createInjector(new MyModule());
        MyApplication app = injector.getInstance(MyApplication.class);
        // Start application, add ShutdownHook, etc...
    }
}
Run Code Online (Sandbox Code Playgroud)

到目前为止一切都很好......现在,我有一些利用我的Connection对象的DAO类,但是使用静态方法检索如下:

public class MyConfiguration {
    private Config conf;
    private Connection cxn; // Would like to have this injected

    private MyConfiguration(Config conf) {
        this.conf = conf;
    }

    public static …
Run Code Online (Sandbox Code Playgroud)

java dependency-injection guice

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

Java Concurrency:Variable上的ReadWriteLock

我正在寻找一种方法来结合功能synchronized和功能java.util.concurrent.locks.ReentrantReadWriteLock.更具体地说,我想要一个方法只在WriteLock设置时锁定,但我希望锁定在一个对象变量上synchronized.以下是有助于解释的示例:

ReentrantReadWriteLock示例

public void methodOne(String var) {
    lock.writeLock().lock;
    try {
        // Processing
    }
    finally {
        lock.writeLock().unlock();
    }
}

public void methodTwo(String var) {
    lock.readLock().lock;
    try {
        // Processing
    }
    finally {
        lock.readLock().unlock();
    }
}
Run Code Online (Sandbox Code Playgroud)

在此示例中,methodTwo只要writeLockon methodOne未被锁定,就可以无阻塞地调用.这很好,我正在寻找的功能,但是当它writeLock被锁定时,它被锁定所有情况var.相反,我希望它只能像以下var一样锁定synchronized:

同步示例

public void methodOne(String var) {
    synchronized(var) {
        // Processing
    }
}

public void methodTwo(String var) {
    synchronized(var) {
        // Processing
    }
} …
Run Code Online (Sandbox Code Playgroud)

java concurrency multithreading

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

使用NTLM到SharePoint的CXF SOAP客户端

我写使用CXF框架(版本:2.7.8)SOAP客户端为SharePoint 2007年我跟随添加NTLM支持的在线文档这里.我有客户工作和跟踪的HTTP会话显示NTLM凭据被发送,但是,我仍然收到401未授权的响应.

码:

Lists listService = new Lists();
ListsSoap port = listService.getListsSoap();

BindingProvider bp = (BindingProvider) port;
bp.getRequestContext().put("use.async.http.conduit", Boolean.TRUE);
Credentials creds = new NTCredentials(USER, PASS, "", DOMAIN);
bp.getRequestContext().put(Credentials.class.getName(), creds);

Client client = ClientProxy.getClient(proxy);
HTTPConduit http = (HTTPConduit) client.getConduit();
HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();
httpClientPolicy.setConnectionTimeout(36000);
httpClientPolicy.setAllowChunking(false);
httpClientPolicy.setAutoRedirect(true);
http.setClient(httpClientPolicy);

// Build request and execute
Run Code Online (Sandbox Code Playgroud)

有趣的是,我使用HTTP PUT为WebDAV编写了一个类似的客户端,使用Apache HTTPClient库上传文档,并且能够使用NTLM成功进行身份验证.此外,我能够使用SOAPUI来调用我正在尝试构建Java客户端的相同列表Web服务,并且它也使用NTLM成功进行了身份验证.

我假设NTLM的实现在CXF和HTTPClient之间是不同的.有关我的CXF实施有什么问题的想法?或者我如何让它镜像HTTPClient实现?

java sharepoint soap ntlm cxf

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