Ibm mobilefirst 带有外部库的IBM MobileFirst适配器

Ibm mobilefirst 带有外部库的IBM MobileFirst适配器,ibm-mobilefirst,mobilefirst-adapters,mobilefirst-cli,Ibm Mobilefirst,Mobilefirst Adapters,Mobilefirst Cli,在IBM MobileFirst 8.0中使用带有java适配器的外部库是否有任何限制 当我添加代码时没有错误(mfpdev适配器构建成功),但当部署到我的服务器时,它会以错误响应: [ERROR] Failed to execute goal com.ibm.mfp:adapter-maven-plugin:8.0.2016082422:deploy (default-cli) on project X: The output of /mfpadmin/management-apis/2.0/

在IBM MobileFirst 8.0中使用带有java适配器的外部库是否有任何限制

当我添加代码时没有错误(mfpdev适配器构建成功),但当部署到我的服务器时,它会以错误响应:

[ERROR] Failed to execute goal com.ibm.mfp:adapter-maven-plugin:8.0.2016082422:deploy (default-cli) on project X: The output of /mfpadmin/management-apis/2.0/runtimes/mfp/adapters is of type text/html, which is unsupported. Expected an output of type text/xml or application/xml or application/json. -> [Help 1]
但当我在pom(mvn依赖项)中删除guava时,我就能够部署适配器了。正如我所看到的,这个问题也发生在其他一些库中。有没有选择使用这样的库

mfpdev-v:8.0.0-2017012016

编辑:通过在pom文件中设置番石榴的作用域,我最终解决了问题:

<scope>provided</scope>
已提供

我在我的MFP 8.0环境中尝试了这个,但没有发现问题

mfpdev -v
8.0.0-2017012016

0. Create  a sample Java adapter "mfpdev adapter create" 
1. Added dependency with guava 21 in pom.xml
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>21.0</version>
</dependency>

2. added a simple guava package and used it.

import com.google.common.base.Optional;

@GET

        @Produces(MediaType.TEXT_PLAIN)
        public String getResourceData() {
                // log message to server log
                logger.info("Logging info message...");
                Integer invalidInput = new Integer(20);
      Optional<Integer> a =  Optional.of(Input);
      Optional<Integer> b =  Optional.of(new Integer(10));
      logger.info("Logging my message with guava");
      );
        return "Hello from guava resource "+sum(a,b) ;
       }

4. build, deploy went successful

5. Access above resource 

Request URL

http://localhost:9080/mfp/api/adapters/testGuavaAdapter/resource

Response Body

Hello from guava resource 30

Response Code

200

Response Headers

{
  "x-powered-by": "Servlet/3.1",
  "content-type": "text/plain",
  "date": "Thu, 08 Jun 2017 11:48:32 GMT",
  "content-length": "28"
}
mfpdev-v
8.0.0-2017012016
0创建一个示例Java适配器“mfpdev适配器创建”
1.在pom.xml中添加了与guava 21的依赖关系
番石榴
番石榴
21
2.添加了一个简单的番石榴包装并使用了它。
导入com.google.common.base.Optional;
@得到
@生成(MediaType.TEXT\u PLAIN)
公共字符串getResourceData(){
//将消息记录到服务器日志
logger.info(“日志信息消息…”);
整数输入=新整数(20);
可选a=可选of(输入);
可选b=可选的of(新整数(10));
info(“用番石榴记录我的信息”);
);
返回“番石榴资源你好”+总和(a,b);
}
4.构建、部署成功
5.访问上述资源
请求URL
http://localhost:9080/mfp/api/adapters/testGuavaAdapter/resource
响应体
你好,来自guava资源30
响应代码
200
响应头
{
“x-powered-by”:“Servlet/3.1”,
“内容类型”:“文本/普通”,
“日期”:“2017年6月8日星期四11:48:32 GMT”,
“内容长度”:“28”
}

根据您的环境验证此工作pom。

您是如何将其添加到pom.xml中的?通过mvn依赖项
com.google.guava guava 21.0
我的问题总是发生在依赖关系中有番石榴时,即使我没有在java代码中使用番石榴。若我注释掉guava的依赖关系,我就能够毫无问题地部署适配器,但当我添加这个依赖关系时,我就不能了``正如您在上面所看到的,我添加了依赖项,它可以工作,我使用的MFP服务器版本是最新的MFP8产品版本:8.0.0.00-20170412-235541。您能否确认使用的MFP服务器版本,以及您是否以与pom.xml中的I hv相同的方式添加依赖项?当然,我相信。我最终通过设置scope:provided for dependency解决了这个问题。好的,您还继续使用21.0吗?范围:提供了吗?