对UserGroupCallback类型的不满意依赖:在部署我的应用程序时

时间:2013-09-10 10:22:58

标签: java ejb zk jbpm

使用与zkoss和EJB集成的Jbpm部署应用程序时出现以下错误。谁能帮忙???我正在使用JBoss 7.1.1 final。

错误:

Unsatisfied dependencies for type [UserGroupCallback] with qualifiers [@Default] at injection point [[field] @Inject private org.jbpm.services.task.identity.AbstractUserGroupCallbackDecorator.userGroupCallback]

这是stacktrace:

   15:36:06,393 INFO  [org.jboss.solder.exception.control.extension] (MSC service thread 1-2) Adding handler Qualifiers: [@javax.enterprise.inject.Any()] TraversalMode: BREADTH_FIRST Handles Type: class java.lang.Throwable Precedence: -100 [method] public org.jboss.seam.transaction.SimpleTransactionExceptionHandler.markTransactionRollback(CaughtException<Throwable>) to known handlers
    15:36:06,704 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-2) MSC00001: Failed to start service jboss.deployment.unit."NewJbpm2MavenProject-1.0.war".WeldService: org.jboss.msc.service.StartException in service jboss.deployment.unit."NewJbpm2MavenProject-1.0.war".WeldService: org.jboss.weld.exceptions.DeploymentException: WELD-001408 Unsatisfied dependencies for type [UserGroupCallback] with qualifiers [@Default] at injection point [[field] @Inject private org.jbpm.services.task.identity.AbstractUserGroupCallbackDecorator.userGroupCallback]
        at org.jboss.as.weld.services.WeldService.start(WeldService.java:83)
        at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
        at 
org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_25]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_25]
        at java.lang.Thread.run(Thread.java:724) [rt.jar:1.7.0_25]
    Caused by: org.jboss.weld.exceptions.DeploymentException: WELD-001408 Unsatisfied dependencies for type [UserGroupCallback] with qualifiers [@Default] at injection point [[field] @Inject private org.jbpm.services.task.identity.AbstractUserGroupCallbackDecorator.userGroupCallback]
        at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:275)
        at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:244)
        at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:107)
        at org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:127)
        at org.jboss.weld.bootstrap.Validator.validateDecorators(Validator.java:391)
        at org.jboss.weld.bootstrap.Validator.validateDeployment(Validator.java:329)
        at org.jboss.weld.bootstrap.WeldBootstrap.validateBeans(WeldBootstrap.java:366)
        at org.jboss.as.weld.WeldContainer.start(WeldContainer.java:83)
        at org.jboss.as.weld.services.WeldService.start(WeldService.java:76)
        ... 5 more

    15:36:06,914 INFO  [org.jboss.as.server] (DeploymentScanner-threads - 2) JBAS015870: Deploy of deployment "NewJbpm2MavenProject-1.0.war" was rolled back with failure message {"JBAS014671: Failed services" => {"jboss.deployment.unit.\"NewJbpm2MavenProject-1.0.war\".WeldService" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"NewJbpm2MavenProject-1.0.war\".WeldService: org.jboss.weld.exceptions.DeploymentException: WELD-001408 Unsatisfied dependencies for type [UserGroupCallback] with qualifiers [@Default] at injection point [[field] @Inject private org.jbpm.services.task.identity.AbstractUserGroupCallbackDecorator.userGroupCallback]"}}
    15:36:06,922 INFO  [org.jboss.as.jpa] (MSC service thread 1-4) JBAS011403: Stopping Persistence Unit Service 'NewJbpm2MavenProject-1.0.war#PersonDEMO-PU'
    15:36:06,992 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-1) JBAS015877: Stopped deployment NewJbpm2MavenProject-1.0.war in 78ms
    15:36:06,994 INFO  [org.jboss.as.controller] (DeploymentScanner-threads - 2) JBAS014774: Service status report
    JBAS014777:   Services which failed to start:      service jboss.deployment.unit."NewJbpm2MavenProject-1.0.war".WeldService: org.jboss.msc.service.StartException in service jboss.deployment.unit."NewJbpm2MavenProject-1.0.war".WeldService: org.jboss.weld.exceptions.DeploymentException: WELD-001408 Unsatisfied dependencies for type [UserGroupCallback] with qualifiers [@Default] at injection point [[field] @Inject private org.jbpm.services.task.identity.AbstractUserGroupCallbackDecorator.userGroupCallback]

    15:36:06,995 ERROR [org.jboss.as.server.deployment.scanner] (DeploymentScanner-threads - 1) {"JBAS014653: Composite operation failed and was rolled back. Steps that failed:" => {"Operation step-2" => {"JBAS014671: Failed services" => {"jboss.deployment.unit.\"NewJbpm2MavenProject-1.0.war\".WeldService" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"NewJbpm2MavenProject-1.0.war\".WeldService: org.jboss.weld.exceptions.DeploymentException: WELD-001408 Unsatisfied dependencies for type [UserGroupCallback] with qualifiers [@Default] at injection point [[field] @Inject private org.jbpm.services.task.identity.AbstractUserGroupCallbackDecorator.userGroupCallback]"}}}}

2 个答案:

答案 0 :(得分:2)

你必须实现自己的UserGroupCallback类......像这样:

import java.util.ArrayList;
import java.util.List;

import javax.enterprise.inject.Alternative;

import org.kie.internal.task.api.UserGroupCallback;


@Alternative
public class MyUserGroupCallback implements UserGroupCallback {

    public boolean existsGroup(String groupId) {
        return true;
    }

    public boolean existsUser(String userId) {
        return true;
    }

    public List<String> getGroupsForUser(String userId, List<String> groupIds, List<String> allExistingGroupIds) {
        List<String> l = new ArrayList<String>();
        return l;
    }

}

然后提供您的实施的制作人:

import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.inject.Produces;
import javax.inject.Inject;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.PersistenceUnit;

import org.jbpm.runtime.manager.impl.RuntimeEnvironmentBuilder;
import org.jbpm.runtime.manager.impl.cdi.InjectableRegisterableItemsFactory;
import org.kie.api.io.ResourceType;
import org.kie.internal.io.ResourceFactory;
import org.kie.internal.runtime.manager.RuntimeEnvironment;
import org.kie.internal.runtime.manager.cdi.qualifier.PerProcessInstance;
import org.kie.internal.runtime.manager.cdi.qualifier.PerRequest;
import org.kie.internal.runtime.manager.cdi.qualifier.Singleton;
import org.kie.internal.task.api.UserGroupCallback;

@ApplicationScoped
public class SimpleProcessRuntimeProducer {
    @SuppressWarnings("cdi-ambiguous-dependency")
    @Inject
    private InjectableRegisterableItemsFactory factory;

    @Inject
    private UserGroupCallback usergroupCallback;

    @Produces
    public UserGroupCallback produceUserGroupCallback() {
        return usergroupCallback;
    }

    @PersistenceUnit(unitName = "unitname")
    private EntityManagerFactory emf;

    @Produces
    public EntityManagerFactory produceEntityManagerFactory() {
        if (this.emf == null) {
            this.emf = Persistence
                    .createEntityManagerFactory("unitname");
        }
        return this.emf;
    }

    @Produces
    @Singleton
    @PerProcessInstance
    @PerRequest
    public RuntimeEnvironment produceEnvironment(EntityManagerFactory emf) {

        RuntimeEnvironment environment = RuntimeEnvironmentBuilder
                .getDefault()
                .entityManagerFactory(emf)
                .userGroupCallback(usergroupCallback)
                .registerableItemsFactory(factory)
                .addAsset(ResourceFactory.newClassPathResource("process.bpmn"),ResourceType.BPMN2)
                .get();       
        return environment;
    }
}

希望这有帮助

答案 1 :(得分:0)

你的类路径中是否有jbpm-human-task-core? (在战争中或在应用程序服务器库中?)