小编Ole*_*leg的帖子

JavaEE 6中的JAAS配置和LDAP登录模块

我在这里写一个问题,因为我自己几个月都找不到解决方案.我的情况:我有一个用java编写的客户端服务器应用程序,它使用Java2ee 6和EJB3.0.服务器端部署在glassfish 3.0上.我需要为应用程序开发/实现登录模块.必须使用ldap服务器进行身份验证,并在应用程序内部处理授权.因此,我想聘请JAAS技术来进行身份验证和授权.我这样做是为了例如像在这里.然后我按照本教程官方文档进行登录.我的问题是ldap登录不起作用.

我的代码:

    LoginContext lc = null;

    try {
        CallbackHandler handler = new CallbackHandler() {
            public void handle(Callback[] callbacks) throws UnsupportedCallbackException {
                for( int i = 0; i < callbacks.length; i++ ) {
                    if( callbacks[i] instanceof NameCallback ) {
                        // prompt the user for a username
                          NameCallback nc = (NameCallback)callbacks[i];
                          nc.setName("admin");
                          System.out.println("Login done.");
                    } else if( callbacks[i] instanceof PasswordCallback ) {
                        // prompt the user for sensitive information
                          PasswordCallback pc = (PasswordCallback)callbacks[i];
                          pc.setPassword("mypassword".toCharArray()); …
Run Code Online (Sandbox Code Playgroud)

java ldap jaas java-ee-6 glassfish-3

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

JBPM6:如何在服务器崩溃后从上一个成功节点恢复进程?

我正在尝试在执行jbpm6进程时实现故障转移策略.我的设置如下:

  • 我正在使用启用了持久性的jbpm6.2.0-Final(最新稳定版)
  • 我构建的一个实例org.kie.spring.factorybeans.RuntimeManagerFactoryBean与类型SINGLETON,以获得KSession启动/中止进程和完整/中止工作项目
  • 所有bean都是由Spring 3.2连接的
  • DB2用作数据库引擎
  • 我使用Tomcat 7.0.27

在积极的情况下,一切都按照我的预期运作.但我想知道如何在服务器崩溃的情况下恢复该过程.为了重现它,我开始了我的进程(描述为BPMN2文件),得到了一些中间步骤并杀死了Tomcat进程.之后,我在PROCESS_INSTANCE_INFO表中看到未完成的流程实例,在WORK_ITEM_INFO表中看到未完成的工作项.SESSION_INFO表中还有一个会话.

我的问题是:你能告诉我代码例子,它将采用剩余的进程并从最后一个节点开始恢复它(如果可能的话).

更新 我忘了提到我没有使用jbpm-console,但是我将jbpm嵌入到我的javaee应用程序中.

java spring drools jbpm bpmn

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

为什么 javax.ejb.AsyncResult.isDone 总是抛出异常?

我想我误解了java ee异步方法调用。我遵循这个官方教程的想法。对于 void 方法来说没问题,但我希望我的异步方法返回一个值:

@Asynchronous
public Future<String> processPayment(Order order) {
    ...
    String status = ...;
    return new AsyncResult<String>(status);
}
Run Code Online (Sandbox Code Playgroud)

我在后台有很多这样长时间运行的任务,因此我收集List<Future<String>>并循环它们以检查任务是否完成。我做这个检查

for(Future<String> future: listOfFutures) {
    if(future.isDone())
       // do something
}
Run Code Online (Sandbox Code Playgroud)

但是当调用IllegalStateException:"Object does not represent an acutal Future"该方法时,代码会失败。AsyncResult.isDone()

好吧,然后我读到了这篇文章,这让我很困惑:官方教程说“使用 AsyncResult.isDone()”来检查异步方法的状态,而官方 javadoc 说“不敢使用 AsyncResult.isDone()”

我知道我可以FutureTask<T>与 一起使用Callable<T>,但这是 java se 部分。

您能否解释一下是否可以使用java ee 异步方法调用

谢谢你!

PS 我正在使用 Glassfish 3.1.2 和 EJB 3.1

java asynchronous future jakarta-ee

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

JavaFX滚动事件处理TableView

我的JavaFX项目有问题.有一刻我无法理解.据我所知,以下代码应该能够处理表的所有滚动事件,这是TableView的一个实例

        table.setOnScroll(new EventHandler<ScrollEvent>() {
            @Override
            public void handle(ScrollEvent scrollEvent) {
                System.out.println("Hello!");
                int i = 0;
                int length = table.getItems().size();
                for(Node n: table.lookupAll("TableRow")) {
                    if (n instanceof TableRow) {
                        TableRow row = (TableRow) n;
                        if(table.getItems().get(i).getType() == "fwfx") {                    
                            row.setStyle("-fx-background-color: forestgreen;");
                        }
                        i++;
                    }
                    if(i == length) {
                        break;
                    }
                }
            }
        }
    );
Run Code Online (Sandbox Code Playgroud)

每当我启动应用程序时,它只会为可见行正确突出显示行.我发现它是因为

table.lookupAll("TableRow")
Run Code Online (Sandbox Code Playgroud)

为我返回仅17个节点的集合.虽然

table.getItems().size()
Run Code Online (Sandbox Code Playgroud)

显示正确的行数.如果我向下滚动表格,我会看到突出显示未批准的行.我迷失了一点.

所以问题是如何正确处理我的表的滚动事件?我需要处理表的所有行,而不仅仅是可见的.

javafx-2

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