我在这里写一个问题,因为我自己几个月都找不到解决方案.我的情况:我有一个用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) 我正在尝试在执行jbpm6进程时实现故障转移策略.我的设置如下:
org.kie.spring.factorybeans.RuntimeManagerFactoryBean
与类型SINGLETON
,以获得KSession
启动/中止进程和完整/中止工作项目在积极的情况下,一切都按照我的预期运作.但我想知道如何在服务器崩溃的情况下恢复该过程.为了重现它,我开始了我的进程(描述为BPMN2文件),得到了一些中间步骤并杀死了Tomcat进程.之后,我在PROCESS_INSTANCE_INFO表中看到未完成的流程实例,在WORK_ITEM_INFO表中看到未完成的工作项.SESSION_INFO表中还有一个会话.
我的问题是:你能告诉我代码的例子,它将采用剩余的进程并从最后一个节点开始恢复它(如果可能的话).
更新 我忘了提到我没有使用jbpm-console,但是我将jbpm嵌入到我的javaee应用程序中.
我想我误解了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
我的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)
显示正确的行数.如果我向下滚动表格,我会看到突出显示未批准的行.我迷失了一点.
所以问题是如何正确处理我的表的滚动事件?我需要处理表的所有行,而不仅仅是可见的.
java ×3
asynchronous ×1
bpmn ×1
drools ×1
future ×1
glassfish-3 ×1
jaas ×1
jakarta-ee ×1
java-ee-6 ×1
javafx-2 ×1
jbpm ×1
ldap ×1
spring ×1