2017-12-01 27 views
0

저는 WSO2 ESB에 있지 않아 다음과 같은 문제가 있습니다.WSO2 ESB에서 왜 동일한 컨텍스트 값을 갖는 두 개의 다른 API를 만들 수 없습니까?

내 ESB 프로젝트에는 동일한 컨텍스트을 가지고 있지만 다른 URL을 처리하는 2 개의 다른 API가 있습니다.

1) 첫 번째는 CommoditiesInACountry명명하고이 방법으로 정의된다 :

<?xml version="1.0" encoding="UTF-8"?> 
<api context="/country" name="CommoditiesInACountry" xmlns="http://ws.apache.org/ns/synapse"> 
    <resource methods="GET" uri-template="/{localizationId}/commodities"> 
    .............................................................. 
    .............................................................. 
    .............................................................. 

2) 두 번째는 CommodityInLocationMarkets 명명하고이 방법으로 정의된다 :

<?xml version="1.0" encoding="UTF-8"?> 
<api context="/country" name="CommodityInLocationMarkets" xmlns="http://ws.apache.org/ns/synapse"> 
    <resource methods="GET" uri-template="/{localizationId}/commodity/{commodityId}"> 
    .............................................................. 
    .............................................................. 
    .............................................................. 

두 가지 모두 동일한 컨텍스트에서 값이 /인데도 볼 수 있듯이 2 개의 API는 서로 다른 URL을 처리합니다. inf 첫 번째는 자원 을 처리하는 역할을 .../국가/{localizationId}/상품와 Resouce의 을 처리하는 두 번째 .../국가/{localizationId}/상품/{commodityId}

문제 입니다 제가 같은 컨텍스트 값을 갖는 2 differents의 API를 가지고 내가 사실과 관련된 다음과 같은 오류 메시지를 얻을 내 탄소 응용 프로그램을 배포 할 때 :

TID: [-1234] [] [2017-12-01 15:37:31,573] INFO {org.apache.synapse.rest.API} - Initializing API: CommodityInLocationMarkets {org.apache.synapse.rest.API} 
TID: [-1234] [] [2017-12-01 15:37:31,573] ERROR {org.apache.synapse.config.SynapseConfiguration} - URL context: /country is already registered with the API: CommoditiesInACountry {org.apache.synapse.config.SynapseConfiguration} 
TID: [-1234] [] [2017-12-01 15:37:31,573] ERROR {org.wso2.carbon.rest.api.ApiDeployer} - API deployment from the file : /opt/wso2/wso2ei-6.1.1/wso2/tmp/carbonapps/-1234/1512139051333agrimarketprice-cap_1.0.0.car/CommodityInLocationMarkets_1.0.0/CommodityInLocationMarkets-1.0.0.xml : Failed. {org.wso2.carbon.rest.api.ApiDeployer} 
org.apache.synapse.SynapseException: URL context: /country is already registered with the API: CommoditiesInACountry 
     at org.apache.synapse.config.SynapseConfiguration.handleException(SynapseConfiguration.java:1629) 
     at org.apache.synapse.config.SynapseConfiguration.addAPI(SynapseConfiguration.java:407) 
     at org.apache.synapse.deployers.APIDeployer.deploySynapseArtifact(APIDeployer.java:59) 
     at org.wso2.carbon.rest.api.ApiDeployer.deploySynapseArtifact(ApiDeployer.java:34) 
     at org.apache.synapse.deployers.AbstractSynapseArtifactDeployer.deploy(AbstractSynapseArtifactDeployer.java:194) 
     at org.wso2.carbon.application.deployer.synapse.SynapseAppDeployer.deployArtifacts(SynapseAppDeployer.java:131) 
     at org.wso2.carbon.application.deployer.internal.ApplicationManager.deployCarbonApp(ApplicationManager.java:272) 
     at org.wso2.carbon.application.deployer.CappAxis2Deployer.deploy(CappAxis2Deployer.java:72) 
     at org.apache.axis2.deployment.repository.util.DeploymentFileData.deploy(DeploymentFileData.java:136) 
     at org.apache.axis2.deployment.DeploymentEngine.doDeploy(DeploymentEngine.java:807) 
     at org.apache.axis2.deployment.repository.util.WSInfoList.update(WSInfoList.java:144) 
     at org.apache.axis2.deployment.RepositoryListener.update(RepositoryListener.java:377) 
     at org.apache.axis2.deployment.RepositoryListener.checkServices(RepositoryListener.java:254) 
     at org.apache.axis2.deployment.RepositoryListener.startListener(RepositoryListener.java:371) 
     at org.apache.axis2.deployment.scheduler.SchedulerTask.checkRepository(SchedulerTask.java:59) 
     at org.apache.axis2.deployment.scheduler.SchedulerTask.run(SchedulerTask.java:67) 
     at org.wso2.carbon.core.deployment.CarbonDeploymentSchedulerTask.runAxisDeployment(CarbonDeploymentSchedulerTask.java:93) 
     at org.wso2.carbon.core.deployment.CarbonDeploymentSchedulerTask.run(CarbonDeploymentSchedulerTask.java:138) 
     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
     at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) 
     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) 
     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
     at java.lang.Thread.run(Thread.java:745) 
TID: [-1234] [] [2017-12-01 15:37:31,574] ERROR {org.apache.synapse.deployers.AbstractSynapseArtifactDeployer} - Deployment of the Synapse Artifact from file : /opt/wso2/wso2ei-6.1.1/wso2/tmp/carbonapps/-1234/1512139051333agrimarketprice-cap_1.0.0.car/CommodityInLocationMarkets_1.0.0/CommodityInLocationMarkets-1.0.0.xml : Failed! {org.apache.synapse.deployers.AbstractSynapseArtifactDeployer} 
org.apache.synapse.deployers.SynapseArtifactDeploymentException: API deployment from the file : /opt/wso2/wso2ei-6.1.1/wso2/tmp/carbonapps/-1234/1512139051333agrimarketprice-cap_1.0.0.car/CommodityInLocationMarkets_1.0.0/CommodityInLocationMarkets-1.0.0.xml : Failed. 
     at org.apache.synapse.deployers.AbstractSynapseArtifactDeployer.handleSynapseArtifactDeploymentError(AbstractSynapseArtifactDeployer.java:474) 
     at org.apache.synapse.deployers.APIDeployer.deploySynapseArtifact(APIDeployer.java:71) 
     at org.wso2.carbon.rest.api.ApiDeployer.deploySynapseArtifact(ApiDeployer.java:34) 
     at org.apache.synapse.deployers.AbstractSynapseArtifactDeployer.deploy(AbstractSynapseArtifactDeployer.java:194) 
     at org.wso2.carbon.application.deployer.synapse.SynapseAppDeployer.deployArtifacts(SynapseAppDeployer.java:131) 
     at org.wso2.carbon.application.deployer.internal.ApplicationManager.deployCarbonApp(ApplicationManager.java:272) 
     at org.wso2.carbon.application.deployer.CappAxis2Deployer.deploy(CappAxis2Deployer.java:72) 
     at org.apache.axis2.deployment.repository.util.DeploymentFileData.deploy(DeploymentFileData.java:136) 
     at org.apache.axis2.deployment.DeploymentEngine.doDeploy(DeploymentEngine.java:807) 
     at org.apache.axis2.deployment.repository.util.WSInfoList.update(WSInfoList.java:144) 
     at org.apache.axis2.deployment.RepositoryListener.update(RepositoryListener.java:377) 
     at org.apache.axis2.deployment.RepositoryListener.checkServices(RepositoryListener.java:254) 
     at org.apache.axis2.deployment.RepositoryListener.startListener(RepositoryListener.java:371) 
     at org.apache.axis2.deployment.scheduler.SchedulerTask.checkRepository(SchedulerTask.java:59) 
     at org.apache.axis2.deployment.scheduler.SchedulerTask.run(SchedulerTask.java:67) 
     at org.wso2.carbon.core.deployment.CarbonDeploymentSchedulerTask.runAxisDeployment(CarbonDeploymentSchedulerTask.java:93) 
     at org.wso2.carbon.core.deployment.CarbonDeploymentSchedulerTask.run(CarbonDeploymentSchedulerTask.java:138) 
     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
     at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) 
     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) 
     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
     at java.lang.Thread.run(Thread.java:745) 
Caused by: org.apache.synapse.SynapseException: URL context: /country is already registered with the API: CommoditiesInACountry 
     at org.apache.synapse.config.SynapseConfiguration.handleException(SynapseConfiguration.java:1629) 
     at org.apache.synapse.config.SynapseConfiguration.addAPI(SynapseConfiguration.java:407) 
     at org.apache.synapse.deployers.APIDeployer.deploySynapseArtifact(APIDeployer.java:59) 
     ... 22 more 
TID: [-1234] [] [2017-12-01 15:37:31,576] INFO {org.apache.synapse.deployers.AbstractSynapseArtifactDeployer} - The file has been backed up into : NO_BACKUP_ON_WORKER.INFO {org.apache.synapse.deployers.AbstractSynapseArtifactDeployer} 
TID: [-1234] [] [2017-12-01 15:37:31,576] ERROR {org.apache.synapse.deployers.AbstractSynapseArtifactDeployer} - Deployment of synapse artifact failed. Error reading /opt/wso2/wso2ei-6.1.1/wso2/tmp/carbonapps/-1234/1512139051333agrimarketprice-cap_1.0.0.car/CommodityInLocationMarkets_1.0.0/CommodityInLocationMarkets-1.0.0.xml : API deployment from the file : /opt/wso2/wso2ei-6.1.1/wso2/tmp/carbonapps/-1234/1512139051333agrimarketprice-cap_1.0.0.car/CommodityInLocationMarkets_1.0.0/CommodityInLocationMarkets-1.0.0.xml : Failed. {org.apache.synapse.deployers.AbstractSynapseArtifactDeployer} 
org.apache.axis2.deployment.DeploymentException: API deployment from the file : /opt/wso2/wso2ei-6.1.1/wso2/tmp/carbonapps/-1234/1512139051333agrimarketprice-cap_1.0.0.car/CommodityInLocationMarkets_1.0.0/CommodityInLocationMarkets-1.0.0.xml : Failed. 
     at org.apache.synapse.deployers.AbstractSynapseArtifactDeployer.deploy(AbstractSynapseArtifactDeployer.java:201) 
     at org.wso2.carbon.application.deployer.synapse.SynapseAppDeployer.deployArtifacts(SynapseAppDeployer.java:131) 
     at org.wso2.carbon.application.deployer.internal.ApplicationManager.deployCarbonApp(ApplicationManager.java:272) 
     at org.wso2.carbon.application.deployer.CappAxis2Deployer.deploy(CappAxis2Deployer.java:72) 
     at org.apache.axis2.deployment.repository.util.DeploymentFileData.deploy(DeploymentFileData.java:136) 
     at org.apache.axis2.deployment.DeploymentEngine.doDeploy(DeploymentEngine.java:807) 
     at org.apache.axis2.deployment.repository.util.WSInfoList.update(WSInfoList.java:144) 
     at org.apache.axis2.deployment.RepositoryListener.update(RepositoryListener.java:377) 
     at org.apache.axis2.deployment.RepositoryListener.checkServices(RepositoryListener.java:254) 
     at org.apache.axis2.deployment.RepositoryListener.startListener(RepositoryListener.java:371) 
     at org.apache.axis2.deployment.scheduler.SchedulerTask.checkRepository(SchedulerTask.java:59) 
     at org.apache.axis2.deployment.scheduler.SchedulerTask.run(SchedulerTask.java:67) 
     at org.wso2.carbon.core.deployment.CarbonDeploymentSchedulerTask.runAxisDeployment(CarbonDeploymentSchedulerTask.java:93) 
     at org.wso2.carbon.core.deployment.CarbonDeploymentSchedulerTask.run(CarbonDeploymentSchedulerTask.java:138) 
     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
     at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) 
     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) 
     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
     at java.lang.Thread.run(Thread.java:745) 
Caused by: org.apache.synapse.deployers.SynapseArtifactDeploymentException: API deployment from the file : /opt/wso2/wso2ei-6.1.1/wso2/tmp/carbonapps/-1234/1512139051333agrimarketprice-cap_1.0.0.car/CommodityInLocationMarkets_1.0.0/CommodityInLocationMarkets-1.0.0.xml : Failed. 
     at org.apache.synapse.deployers.AbstractSynapseArtifactDeployer.handleSynapseArtifactDeploymentError(AbstractSynapseArtifactDeployer.java:474) 
     at org.apache.synapse.deployers.APIDeployer.deploySynapseArtifact(APIDeployer.java:71) 
     at org.wso2.carbon.rest.api.ApiDeployer.deploySynapseArtifact(ApiDeployer.java:34) 
     at org.apache.synapse.deployers.AbstractSynapseArtifactDeployer.deploy(AbstractSynapseArtifactDeployer.java:194) 
     ... 20 more 
Caused by: org.apache.synapse.SynapseException: URL context: /country is already registered with the API: CommoditiesInACountry 
     at org.apache.synapse.config.SynapseConfiguration.handleException(SynapseConfiguration.java:1629) 
     at org.apache.synapse.config.SynapseConfiguration.addAPI(SynapseConfiguration.java:407) 
     at org.apache.synapse.deployers.APIDeployer.deploySynapseArtifact(APIDeployer.java:59) 
     ... 22 more 
TID: [-1234] [] [2017-12-01 15:37:31,577] ERROR {org.wso2.carbon.application.deployer.internal.ApplicationManager} - Error occurred while deploying Carbon Application {org.wso2.carbon.application.deployer.internal.ApplicationManager} 
org.apache.axis2.deployment.DeploymentException: API deployment from the file : /opt/wso2/wso2ei-6.1.1/wso2/tmp/carbonapps/-1234/1512139051333agrimarketprice-cap_1.0.0.car/CommodityInLocationMarkets_1.0.0/CommodityInLocationMarkets-1.0.0.xml : Failed. 
     at org.apache.synapse.deployers.AbstractSynapseArtifactDeployer.deploy(AbstractSynapseArtifactDeployer.java:213) 
     at org.wso2.carbon.application.deployer.synapse.SynapseAppDeployer.deployArtifacts(SynapseAppDeployer.java:131) 
     at org.wso2.carbon.application.deployer.internal.ApplicationManager.deployCarbonApp(ApplicationManager.java:272) 
     at org.wso2.carbon.application.deployer.CappAxis2Deployer.deploy(CappAxis2Deployer.java:72) 
     at org.apache.axis2.deployment.repository.util.DeploymentFileData.deploy(DeploymentFileData.java:136) 
     at org.apache.axis2.deployment.DeploymentEngine.doDeploy(DeploymentEngine.java:807) 
     at org.apache.axis2.deployment.repository.util.WSInfoList.update(WSInfoList.java:144) 
     at org.apache.axis2.deployment.RepositoryListener.update(RepositoryListener.java:377) 
     at org.apache.axis2.deployment.RepositoryListener.checkServices(RepositoryListener.java:254) 
     at org.apache.axis2.deployment.RepositoryListener.startListener(RepositoryListener.java:371) 
     at org.apache.axis2.deployment.scheduler.SchedulerTask.checkRepository(SchedulerTask.java:59) 
     at org.apache.axis2.deployment.scheduler.SchedulerTask.run(SchedulerTask.java:67) 
     at org.wso2.carbon.core.deployment.CarbonDeploymentSchedulerTask.runAxisDeployment(CarbonDeploymentSchedulerTask.java:93) 
     at org.wso2.carbon.core.deployment.CarbonDeploymentSchedulerTask.run(CarbonDeploymentSchedulerTask.java:138) 
     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
     at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) 
     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) 
     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
     at java.lang.Thread.run(Thread.java:745) 
Caused by: org.apache.axis2.deployment.DeploymentException: API deployment from the file : /opt/wso2/wso2ei-6.1.1/wso2/tmp/carbonapps/-1234/1512139051333agrimarketprice-cap_1.0.0.car/CommodityInLocationMarkets_1.0.0/CommodityInLocationMarkets-1.0.0.xml : Failed. 
     at org.apache.synapse.deployers.AbstractSynapseArtifactDeployer.deploy(AbstractSynapseArtifactDeployer.java:201) 
     ... 20 more 
Caused by: org.apache.synapse.deployers.SynapseArtifactDeploymentException: API deployment from the file : /opt/wso2/wso2ei-6.1.1/wso2/tmp/carbonapps/-1234/1512139051333agrimarketprice-cap_1.0.0.car/CommodityInLocationMarkets_1.0.0/CommodityInLocationMarkets-1.0.0.xml : Failed. 
     at org.apache.synapse.deployers.AbstractSynapseArtifactDeployer.handleSynapseArtifactDeploymentError(AbstractSynapseArtifactDeployer.java:474) 
     at org.apache.synapse.deployers.APIDeployer.deploySynapseArtifact(APIDeployer.java:71) 
     at org.wso2.carbon.rest.api.ApiDeployer.deploySynapseArtifact(ApiDeployer.java:34) 
     at org.apache.synapse.deployers.AbstractSynapseArtifactDeployer.deploy(AbstractSynapseArtifactDeployer.java:194) 
     ... 20 more 
Caused by: org.apache.synapse.SynapseException: URL context: /country is already registered with the API: CommoditiesInACountry 
     at org.apache.synapse.config.SynapseConfiguration.handleException(SynapseConfiguration.java:1629) 
     at org.apache.synapse.config.SynapseConfiguration.addAPI(SynapseConfiguration.java:407) 
     at org.apache.synapse.deployers.APIDeployer.deploySynapseArtifact(APIDeployer.java:59) 

가이 API를 컨텍스트 값 중 하나를 변경 올바르게에 배포를 내 Carbon 서버.

내 문제는이 두 API의 URL이 .../country으로 시작해야 컨텍스트 값으로 정의된다는 것입니다.

WSO2 ESB은 두 API에 대해 동일한 컨텍스트를 허용하지 않을 수 있습니까? WSO2 ESB을 사용하여 XXX.YYY.ZZZ.RRR/국가/...

가 가능 할 수 있습니다 : 어떻게 모두 같은 URL을 가진 두 개의 서로 다른 API를 만들 수 있습니까?

내 솔루션의 두 가지 다른 문제가있는 해결책을 찾아서 WSO2 API MANAGER 최종 사용자가 사용하는 최종 URL을 여기에 정의 할 수 있습니다.

해결책이 될 수있는 것은 무엇입니까?

+0

ESB/APIM /{localizationId}/commodities/{commodityId}이 같은 맥락으로이 API를 만드는 허용하지 않는해야한다, 표준 휴식을 준수합니다. 여러 리소스가있는 API가 없어도 같은 맥락의 API 2 개가 필요하다는 특별한 이유가 있습니까? – Bee

답변

2

ESB/APIM은 동일한 컨텍스트에서 2 개의 API를 만들 수 없습니다. 그러나 하나의 API를 사용하고 이와 같은 여러 리소스를 사용할 수 있습니다. 관련 메모에

<?xml version="1.0" encoding="UTF-8"?> 
<api context="/country" name="CommoditiesInACountry" xmlns="http://ws.apache.org/ns/synapse"> 
    <resource methods="GET" uri-template="/{localizationId}/commodities"> 
     ................................ 
     ................................ 
    </resource> 
    <resource methods="GET" uri-template="/{localizationId}/commodity/{commodityId}"> 
     ................................ 
     ................................ 
    </resource> 
</api> 

:는 두 번째 자원이