2016-07-21 2 views
0

MSF4J를 사용하여 마이크로 서비스를 개발하려고합니다. 이 서비스는 입력 요청의 헤더 세부 정보를 가져 와서 이후 작업을 위해 SOAP 서비스와 통신을 시도합니다. 일반 응용 프로그램으로 작성된이 논리는 잘 작동하지만, microservice로 변환 할 때 예외MSF4J 마이크로 서비스가 SOAP 서비스와 통신하려고합니다.

[org.apache.axis2.context.AbstractContext] : OnDemandLogger initialized for class org.apache.axis2.context.AbstractContext is:[email protected] 
[org.apache.axis2.util.Loader] : Trying to find [org/apache/axis2/deployment/axis2_default.xml] using [email protected] class loader. 
2016-07-21 17:45:48 ERROR ChannelChunkResponder:103 - Resource method threw an exception 
java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at org.wso2.msf4j.internal.router.HttpMethodInfo.invoke(HttpMethodInfo.java:95) 
    at org.wso2.msf4j.internal.router.HttpDispatcher.channelRead0(HttpDispatcher.java:53) 
    at org.wso2.msf4j.internal.router.HttpDispatcher.channelRead0(HttpDispatcher.java:31) 
    at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) 
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:308) 
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:294) 
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) 
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:308) 
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:294) 
    at org.wso2.msf4j.internal.router.RequestRouter.channelRead0(RequestRouter.java:83) 
    at org.wso2.msf4j.internal.router.RequestRouter.channelRead0(RequestRouter.java:44) 
    at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) 
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:308) 
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:294) 
    at io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:86) 
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:308) 
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:294) 
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) 
    at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) 
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:308) 
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:294) 
    at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:244) 
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:308) 
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:294) 
    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:846) 
    at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:131) 
    at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:511) 
    at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:468) 
    at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:382) 
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:354) 
    at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:110) 
    at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137) 
    at java.lang.Thread.run(Unknown Source) 
Caused by: java.lang.NoSuchMethodError: org.apache.axiom.om.OMAbstractFactory.getMetaFactory()Lorg/apache/axiom/om/OMMetaFactory; 
    at org.apache.axiom.om.OMXMLBuilderFactory.createOMBuilder(OMXMLBuilderFactory.java:87) 
    at org.apache.axiom.om.OMXMLBuilderFactory.createOMBuilder(OMXMLBuilderFactory.java:73) 
    at org.apache.axis2.util.XMLUtils.toOM(XMLUtils.java:590) 
    at org.apache.axis2.util.XMLUtils.toOM(XMLUtils.java:575) 
    at org.apache.axis2.deployment.DescriptionBuilder.buildOM(DescriptionBuilder.java:97) 
    at org.apache.axis2.deployment.AxisConfigBuilder.populateConfig(AxisConfigBuilder.java:91) 
    at org.apache.axis2.deployment.DeploymentEngine.populateAxisConfiguration(DeploymentEngine.java:887) 
    at org.apache.axis2.deployment.FileSystemConfigurator.getAxisConfiguration(FileSystemConfigurator.java:116) 
    at org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContext(ConfigurationContextFactory.java:64) 
    at org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContextFromFileSystem(ConfigurationContextFactory.java:210) 
    at org.apache.axis2.client.ServiceClient.configureServiceClient(ServiceClient.java:150) 
    at org.apache.axis2.client.ServiceClient.<init>(ServiceClient.java:143) 
    at org.wso2.carbon.identity.oauth2.stub.OAuth2TokenValidationServiceStub.<init>(OAuth2TokenValidationServiceStub.java:103) 
    at org.wso2.carbon.identity.oauth2.stub.OAuth2TokenValidationServiceStub.<init>(OAuth2TokenValidationServiceStub.java:89) 
    at com.wipro.oauth.manager.IDManagementClient.validateToken(IDManagementClient.java:220) 
    at com.wipro.oauth.manager.IdentityServerRest.getOAuthToken(IdentityServerRest.java:126) 
    ... 37 more 

비누 서비스 다음에서, microservice는 WSO2 신원 서버의 "OAuth2TokenValidationService"입니다와 통신을 시도 던졌습니다. microservice에 정상 애플리케이션을 변환하는 동안 다음의 종속성을 첨가 한

public OAuth2TokenValidationResponseDTO validateToken(
       String accessTokenIdentifier) 
       throws RemoteException, LoginAuthenticationExceptionException { 


      OAuth2TokenValidationServiceStub stub = new OAuth2TokenValidationServiceStub(
        null, server 
          + "/services/OAuth2TokenValidationService"); 

      ServiceClient e3 = stub._getServiceClient(); 
      Options option3 = e3.getOptions(); 
      HttpTransportProperties.Authenticator auth1 = new HttpTransportProperties.Authenticator(); 
      auth1.setUsername(utUsername); 
      auth1.setPassword(utPassword); 
      auth1.setPreemptiveAuthentication(true); 
      option3.setManageSession(true); 
      /*option2.setProperty(Constants.Configuration.MESSAGE_TYPE,HTTPConstants.MEDIA_TYPE_APPLICATION_ECHO_XML); 
      option2.setProperty(Constants.Configuration.DISABLE_SOAP_ACTION,Boolean.TRUE);*/ 
      option3.setProperty(org.apache.axis2.transport.http.HTTPConstants.AUTHENTICATE, auth1); 
      /*option2.setProperty("Cookie", authCookie);*/ 
      e3.setOptions(option3); 

      OAuth2TokenValidationRequestDTO oauthReq = new OAuth2TokenValidationRequestDTO(); 

      OAuth2TokenValidationRequestDTO_OAuth2AccessToken accessToken = new OAuth2TokenValidationRequestDTO_OAuth2AccessToken(); 
      accessToken.setTokenType("Bearer"); 
      accessToken.setIdentifier(accessTokenIdentifier); 
      oauthReq.setAccessToken(accessToken); 
      oauthReq.setRequiredClaimURIs(null); 

      OAuth2TokenValidationResponseDTO resp = stub.validate(oauthReq); 


return resp; 
    } 

다음과 같이

가 SAOP 서비스에 대한 호출을 포함하는 방법이다. 공리와 관련된

<dependency> 
      <groupId>org.wso2.carbon</groupId> 
      <artifactId>org.wso2.carbon.transport</artifactId> 
      <version>5.0.0-alpha</version> 
      <exclusions> 
       <exclusion> 
        <groupId>org.slf4j</groupId> 
        <artifactId>slf4j-api</artifactId> 
       </exclusion> 
      </exclusions> 
     </dependency> 

종속성은

<dependency> 
        <groupId>org.apache.ws.commons.axiom.wso2</groupId> 
        <artifactId>axiom</artifactId> 
        <version>1.2.11.wso2v4</version> 
       </dependency> 
    <dependency> 
     <groupId>org.apache.woden</groupId> 
     <artifactId>woden-impl-dom</artifactId> 
     <version>1.0M8</version> 
</dependency> 

이 문제를 해결하기 위해 어떤 도움이 크게 감사 것입니다.

답변

1

최신 MSF4J 2.0 릴리스를 사용해보실 수 있습니까?

이 문제의 근본 원인은 다음과 같습니다. 원인 : java.lang.NoSuchMethodError : org.apache.axiom.om.OMAbstractFactory.getMetaFactory() Lorg/apache/axiom/om/OMMetaFactory;

이 의미는 종속성 트리에서 대부분의 다른 버전의 Axiom이 전이 의존성으로 끌어 들여지고 있음을 의미합니다.

실행; mvn dependency : Tree에서 Axiom의 다른 버전을 가져오고 Maven 빌드에서 해당 버전을 제외 시키십시오.

관련 문제