mobilefirst-Java适配器中的响应类型
我有一个类(存储在server/java中),它返回一个响应类型对象,我想在适配器中使用它mobilefirst-Java适配器中的响应类型,java,jax-rs,ibm-mobilefirst,mobilefirst-adapters,Java,Jax Rs,Ibm Mobilefirst,Mobilefirst Adapters,我有一个类(存储在server/java中),它返回一个响应类型对象,我想在适配器中使用它 public class CorsResponse { public static Response build() { return Response .ok() .header("Access-Control-Allow-Origin", "*") .header("Access-Control-Allow-Methods
public class CorsResponse {
public static Response build() {
return Response
.ok()
.header("Access-Control-Allow-Origin", "*")
.header("Access-Control-Allow-Methods", "GET, POST")
.header("Access-Control-Allow-Headers", "accept, origin, content-type")
.header("Access-Control-Max-Age", "1728000")
.build();
}
如果在适配器的方法中使用此类,则会出现异常:
javax.servlet.ServletException:java.lang.LinkageError:loader
约束冲突:加载程序(的实例)
com/ibm/ws/classloading/internal/AppClassLoader)之前启动
为名为“javax/ws/rs/core/Response”的不同类型加载
原因:java.lang.LinkageError:加载程序约束冲突:加载程序
(com/ibm/ws/classloading/internal/AppClassLoader的实例)
以前为名称为的其他类型启动加载
“javax/ws/rs/core/Response”
如何设置要加载的响应类型?如果您对CorsFilter感兴趣,我建议像下面这样实现它,并将该类添加到您的
应用程序中
@Provider
public class ResponseCorsFilter implements ContainerResponseFilter {
@Override
public void filter(ContainerRequestContext requestContext,
ContainerResponseContext responseContext) throws IOException {
responseContext.getHeaders().add("Access-Control-Allow-Origin", "*");
responseContext.getHeaders().add("Access-Control-Allow-Methods", "GET, POST, OPTIONS");
String reqHead = requestContext.getHeaderString("Access-Control-Request-Headers");
if(null != reqHead && !reqHead.equals("")){
responseContext.getHeaders().add("Access-Control-Allow-Headers", reqHead);
}
}
}
我已经创建了一个外部项目,将类放在那里,将其编译成jar文件,并将其包含在adapters/adapter\u name/lib文件夹中(也添加到构建路径中)。ContainerResponseFilter在MFP服务器libs中不可用。。。或者它有一个不同的名称:)好吧,您用jax-rs标记了它(并在标题中提到)。jax-rs()规范指定了ContainerResponseFilter
类的存在范围。我以为你在用jax-rs实现?!你说的MFP是什么意思?你说的规格是对的。MFP是IBMMobileFirst平台(包括WebSphereLiberty概要文件),我认为它没有这个类。