2017-04-04 10 views
0

私は、Webアプリケーションとジャスパーがマイクロサービスのように機能しているところで目標を達成しようとしています。私はrabbitmqを使用して、Webアプリケーションのユーザーの詳細をジャスパーに渡します。ジャスパー用のコンシューマーを開発しましたが、今は組織内でユーザーを作成する際に問題が発生しています。私は碧玉のAPIを踏襲し、自分のコードを書きました。(Users and Roles API組織内のジャスパーユーザーを作成する

私は

java.lang.IllegalArgumentException: This implementation does not support tenants 
    at com.jaspersoft.jasperserver.api.metadata.user.service.impl.UserAuthorityServiceImpl.getPersistentTenant(UserAuthorityServiceImpl.java:2029) 
    at com.jaspersoft.jasperserver.api.metadata.user.service.impl.UserAuthorityServiceImpl.getRepoUser(UserAuthorityServiceImpl.java:175) 
    at com.jaspersoft.jasperserver.api.metadata.user.service.impl.UserAuthorityServiceImpl.getRepoUser(UserAuthorityServiceImpl.java:232) 
    at com.jaspersoft.jasperserver.api.metadata.user.service.impl.UserAuthorityServiceImpl.doPutUser(UserAuthorityServiceImpl.java:327) 
    at com.jaspersoft.jasperserver.api.metadata.user.service.impl.UserAuthorityServiceImpl.putUser(UserAuthorityServiceImpl.java:316) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:497) 

私は単にクラスの下に持って、このエラーを取得しています。

UserConsumer.java

import org.springframework.amqp.core.Message; 
import org.springframework.amqp.core.MessageListener; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Component; 

@Component 
public class UsersConsumer implements MessageListener { 

    @Autowired 
    JasperUserManager jasperUserManager; 

    @Override 
    public void onMessage(Message message) { 
     try { 
      System.out.println("==========MESSAGE========>>>>>>>>>> : "+message.toString()); 
      jasperUserManager.saveUser(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

} 

JasperUserManager.java

import com.jaspersoft.jasperserver.api.common.domain.ExecutionContext; 
import com.jaspersoft.jasperserver.api.metadata.user.domain.User; 
import com.jaspersoft.jasperserver.api.metadata.user.service.ObjectPermissionService; 
import com.jaspersoft.jasperserver.api.metadata.user.service.UserAuthorityService; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Component; 

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

@Component 
public class JasperUserManagerImpl implements JasperUserManager { 

    @Autowired 
    private UserAuthorityService userAuthorityService; 

    @Override 
    public void saveUser() { 
     User user = userAuthorityService.newUser(null); 
     user.setUsername("thusira"); 
     user.setTenantId("ACT"); 
     user.setPassword("123"); 
     user.setFullName("Thusira Dissanayake"); 
     user.setEnabled(true); 
     user.setExternallyDefined(false); 
     userAuthorityService.putUser(null, user); 
     System.out.println("================SSSSSSSSSUUCESSS================================"); 
    } 

} 

私の実装に問題がどうなるか私を助けてください。

がMTUserAuthorityServiceは、この例外を持って使用した後

BR、 Thusira

事前にありがとう、

org.springframework.security.authentication.AuthenticationCredentialsNotFoundException: An Authentication object was not found in the SecurityContext 
    at org.springframework.security.access.intercept.AbstractSecurityInterceptor.credentialsNotFound(AbstractSecurityInterceptor.java:339) 
    at org.springframework.security.access.intercept.AbstractSecurityInterceptor.beforeInvocation(AbstractSecurityInterceptor.java:198) 
    at org.springframework.security.access.intercept.aopalliance.MethodSecurityInterceptor.invoke(MethodSecurityInterceptor.java:60) 
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) 
    at com.sun.proxy.$Proxy70.putUser(Unknown Source) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:497) 
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317) 
    at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183) 
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) 
    at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:91) 
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) 
    at com.sun.proxy.$Proxy70.putUser(Unknown Source) 
    at com.cinglevue.veip.report.users.JasperUserManagerImpl.saveUser(JasperUserManagerImpl.java:33) 
    at com.cinglevue.veip.report.users.UsersConsumer.onMessage(UsersConsumer.java:20) 

答えて

1

問題はUserAuthorityServiceは、2つの実装を持っていることです。これらのうちの1つは、とは異なり、テナントについてユーザーに知らせることができない簡単なUserAuthorityServiceImplです。

  • まず、XML設定を確認してください。 js.spring.propertiesは、この行が含まれなければならない。第二のアプローチとして bean.userAuthorityService=mtUserAuthorityService

  • を、あなたは直接MTUserAuthorityServiceImpl Beanを注入することができます。

@Component 
public class JasperUserManagerImpl implements JasperUserManager { 

    @Resource(name="") 
    private UserAuthorityService userAuthorityService; 

    @Override 
    public void saveUser() { 
     User user = userAuthorityService.newUser(null); 
     user.setUsername("thusira"); 
     user.setTenantId("ACT"); 
     user.setPassword("123"); 
     user.setFullName("Thusira Dissanayake"); 
     user.setEnabled(true); 
     user.setExternallyDefined(false); 
     userAuthorityService.putUser(null, user); 
    } 
} 
  • そして最後のケースでは、あなたはおそらくJasperserver MultipleTenancyライセンスを持っていない(たとえば、あなたがコミュニティ版では動作している場合)、その結果、次のことができます。このように例えば テナントとは全く関係がありません。
+0

こんにちはおかげで、私は実際MTUserAuthorityServiceImplを使用し、それがこの例外を私に与えます: –

+0

「org.springframework.security.authentication.AuthenticationCredentialsNotFoundException認証オブジェクトがSecurityContextが で見つかりませんでした」あなたは私の完全なスタックトレースを与えることができますか? –

+0

私は質問に追加しました。上記をご覧ください。 –

関連する問題