- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我使用 Jersey 的网络服务有问题。我有一个由两个输入组成的表单,一个是"file"类型,一个是“文本”类型。
问题是,当我只使用"file"类型的输入时,一切正常,但是当我添加第二个“文本”类型的输入时,我的 servlet 甚至无法正常启动。
这是我启动 servlet 时遇到的异常:
avr. 28, 2015 5:16:17 PM org.apache.catalina.core.StandardContext loadOnStartup
GRAVE: La servlet /SemRecSysWS a généré une exception "load()"
org.glassfish.jersey.server.model.ModelValidationException: Validation of the application resource model has failed during application initialization.
[[FATAL] No injection source found for a parameter of type public java.lang.String fr.checksem.semrecsys.Gestion.insertSKOS(java.io.InputStream,org.openrdf.rio.RDFFormat) at index 0.; source='ResourceMethod{httpMethod=POST, consumedTypes=[multipart/form-data], producedTypes=[text/plain; charset=utf-8], suspended=false, suspendTimeout=0, suspendTimeoutUnit=MILLISECONDS, invocable=Invocable{handler=ClassBasedMethodHandler{handlerClass=class fr.checksem.semrecsys.Gestion, handlerConstructors=[org.glassfish.jersey.server.model.HandlerConstructor@1a533161]}, definitionMethod=public java.lang.String fr.checksem.semrecsys.Gestion.insertSKOS(java.io.InputStream,org.openrdf.rio.RDFFormat), parameters=[Parameter [type=class java.io.InputStream, source=fichier, defaultValue=null], Parameter [type=class org.openrdf.rio.RDFFormat, source=Format, defaultValue=null]], responseType=class java.lang.String}, nameBindings=[]}']
at org.glassfish.jersey.server.ApplicationHandler.initialize(ApplicationHandler.java:500)
at org.glassfish.jersey.server.ApplicationHandler.access$500(ApplicationHandler.java:167)
at org.glassfish.jersey.server.ApplicationHandler$3.run(ApplicationHandler.java:327)
at org.glassfish.jersey.internal.Errors$2.call(Errors.java:289)
at org.glassfish.jersey.internal.Errors$2.call(Errors.java:286)
at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
at org.glassfish.jersey.internal.Errors.processWithException(Errors.java:286)
at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:324)
at org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:315)
at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:170)
at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:358)
at javax.servlet.GenericServlet.init(GenericServlet.java:160)
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1280)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1193)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1088)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5176)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5460)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.StandardContext.reload(StandardContext.java:3954)
at org.apache.catalina.loader.WebappLoader.backgroundProcess(WebappLoader.java:426)
at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1345)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1530)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1540)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1540)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1519)
at java.lang.Thread.run(Unknown Source)
这是我尝试访问文件和文本的函数
@POST
@Path("/initSKOS")
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.TEXT_PLAIN + ";charset=utf-8")
public String insertSKOS(@FormDataParam("fichier") InputStream uploadedInputStream, @FormDataParam("Format") RDFFormat format) {
....
}
我已经为我的变量格式尝试了每种类型,但这并没有改变任何东西。
这是我的 web.xml 文件:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="SemRecSysWS" version="3.0">
<display-name>RecWS</display-name>
<servlet>
<servlet-name>fr.checksem.semrecsys.TestWS</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>fr.checksem.semrecsys</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>fr.checksem.semrecsys.TestWS</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
不知道你是否完全理解我的问题,我尽量说清楚了。
提前致谢
最佳答案
您需要注册 MultiPartFeature
在你的 web.xml 中。您可以简单地添加一个 <init-param>
到 Jersey servlet
<init-param>
<param-name>jersey.config.server.provider.classnames</param-name>
<param-value>org.glassfish.jersey.media.multipart.MultiPartFeature</param-value>
</init-param>
关于java - 我的 Servlet 和 @FormDataParam Jersey 有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29923938/
@POST @Path("post") @Consumes("multipart/form-data") public Response postCategory(@FormD
我们正在使用 java 6。我需要检查“inputStream”是否为 null。 @POST @Path("/test") @ApiOperation ( value = "Test", respo
我正在使用 Jersey 上传文件。我定义了方法: @POST @Path("/upload") @Consumes("multipart/form-data") public Collection
@FormDataParam 和@FormParam 有什么区别? 我在一个方法中使用了多个 @FormDataParam 但它抛出了媒体不支持的类型错误。但是当我使用 @FormParam 时,我得
Jersey documentation (版本 2.29.1)具有以下示例(示例 9.50。@FormDataParam 注释的使用): @POST @Consumes(MediaType.MULT
我可以使用下面的代码上传单张照片,但我想用 @FormDataParam 上传多张照片 @POST @Path("data/uploadPhoto") @Produces(MediaType.APPL
我已经包含了 Apache Jersey 发行版 zip 中的所有 jar,但是无法解析此导入: import com.sun.jersey.multipart.FormDataParam; 它需要什
我正在尝试使用@FormDataParam来轻松支持分段上传。我能够很好地编译所有源代码。但是,运行时,我在控制台中收到以下错误: SEVERE: Missing dependency for met
我正在尝试上传文件,但使用 @FormDataParam 不允许部署应用程序。感兴趣的代码如下: @POST @Path("sync") public String callServletSyncPo
我使用 Jersey 的网络服务有问题。我有一个由两个输入组成的表单,一个是"file"类型,一个是“文本”类型。 问题是,当我只使用"file"类型的输入时,一切正常,但是当我添加第二个“文本”类型
我对 Web 服务还很陌生,所以我从基本示例开始。这与文件上传有关。我正在为非 Maven 开发人员使用最新 (2.17) 版本的 Jersey bundle 。它指出: bundle contain
尝试实现某种图像上传功能时,我发现互联网资源推荐使用 FormDataMultiPart 或 FormDataParam 与 jersey。 Jersey 是一个很好的网络框架,也是 javaee 的
我有一个 rest 调用,它将一些参数作为 FormDataParam。当我将 json 字符串中的对象 EngineConfigMeta 传递给 postman 的其余调用时,在 restcall
我有一个 jersey 服务和单元测试(使用 jersey 客户端),可以与 3 个 FormDataParams 一起工作: @Path("myService") @Consumes(MediaTy
我创建了一个 jersey restful web 服务,我使用 @Context HttpServletRequest 请求 作为方法签名设法上传多个文件工作得很好。 事情是,要获取其他表单字段,我
我创建了一个 Java Web 服务,用于将图像上传到文件夹。它在 html 表单中运行良好,but when i tried to send the image from app inventor
将 Neo4J 从 3.3.4 升级到 3.4.0 时,依赖项“com.sun.jersey.multipart.FormDataParam”不再存在。我们这样使用它: @POST @Path("/p
我是一名优秀的程序员,十分优秀!