当我在我的WAS实例上运行时,它不会为我生成JSON模型。在我的日志中,我得到了这个:
(com.wordnik.swagger.core.SwaggerContext) - Class com.foo.bar.model.TestRequest not found in classLoader
我得到的UI是这样的:
这是我的服务代码:
@Path("/testServiceUnit")
@Api(
value = "/testServiceUnit",
description = "Swagger Unit Test Service")
public class TestServiceUnit {
/**
* Simple Post test
*
* @param tReq
* Request sent via post
* @return stub response
*/
@POST
@Path("/tstPost")
@ApiOperation(
value = "Check Reference",
notes = "code to do check cross reference for the object starts",
response = TestResponse.class)
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response checkReference(TestRequest tReq) {
TestResponse tresp = new TestResponse();
tresp.setTestResponder("Hello");
return Response.status(200).entity(tresp).build();
}
}
我已经将问题缩小到swagger中的这段代码:
package com.wordnik.swagger.core
import collection.mutable.ListBuffer
import org.slf4j.{ LoggerFactory, Logger }
object SwaggerContext {
private val LOGGER = LoggerFactory.getLogger("com.wordnik.swagger.core.SwaggerContext")
var suffixResponseFormat = true
private val classLoaders = ListBuffer.empty[ClassLoader]
registerClassLoader(this.getClass.getClassLoader)
def registerClassLoader(cl: ClassLoader) = this.classLoaders += cl
def loadClass(name: String) = {
var cls: Class[_] = null
val itr = classLoaders.reverse.iterator
while (cls == null && itr.hasNext) {
try {
cls = Class.forName(name.trim, true, itr.next)
} catch {
case e: ClassNotFoundException => {
LOGGER.debug("Class %s not found in classLoader".format(name))
}
}
}
if (cls == null)
throw new ClassNotFoundException("class " + name + " not found")
cls
}
}
现在我已经在两个模块模式下加载WAS,其中一个耳朵中的每个模块都有自己的类加载器和应用程序模式,它在整个EAR文件中使用一个类加载器。既不起作用,也不起作用。我也尝试过scala 2.11版本,结果相同。我没有尝试过摇摇晃晃的1.5,因为它看起来像是改变了很多代码而且我没心情在这里重建一切。我的wAS设置为parentfirst类加载,parentlast导致整个应用程序无法加载。我在这里结束了,我不知道还有什么可以尝试。我唯一能想到的是他们在Websphere中构建的IBM JVM做了一些棘手的事情(想象一下),但我不能为我的生活弄清楚为什么这不起作用。有人有什么想法吗?