相关疑难解决方法(0)

如何在Java中读取/转换InputStream为String?

如果你有一个java.io.InputStream对象,你应该如何处理该对象并产生一个String


假设我有一个InputStream包含文本数据,并且我想将其转换为a String,所以例如我可以将其写入日志文件.

采取InputStream并将其转换为最简单的方法是String什么?

public String convertStreamToString(InputStream is) {
    // ???
}
Run Code Online (Sandbox Code Playgroud)

java string io inputstream stream

3864
推荐指数
37
解决办法
203万
查看次数

HttpServletRequest完成URL

我有一个HttpServletRequest对象.

如何获得导致此调用的完整且准确的URL到达我的servlet?

或者至少尽可能准确,因为可能存在可以重新生成的东西(可能是参数的顺序).

java servlets http

230
推荐指数
6
解决办法
24万
查看次数

Http Servlet请求在读取一次后丢失POST主体的参数

我正在尝试访问Java Servlet过滤器中的两个http请求参数,这里没什么新东西,但是很惊讶地发现参数已经被消耗了!因此,它在过滤器链中不再可用.

似乎只有在参数进入POST请求主体(例如表单提交)时才会出现这种情况.

有没有办法读取参数而不消耗它们?

到目前为止,我只找到了这个引用:使用request.getParameter的Servlet过滤器丢失了Form数据.

谢谢!

java parameters servlets httprequest servlet-filters

77
推荐指数
7
解决办法
9万
查看次数

Grizzly Jersey吞咽异常

我正在使用最后的quickstart原型构建Jersey Moxy服务.我的代码工作正常,我可以返回一些JSON.然而,正如我正在开发的那样,如果我犯了一个错误,说请求处理程序有一个不支持的类型,我将得到一个空的500响应,这使调试变得困难.例如,如果我使用@XmlElementRef错误地修饰属性,我将得到如下响应:

$ curl -i http://localhost:8080/myapp/test
HTTP/1.1 500 Internal Server Error
Date: Thu, 05 Sep 2013 10:27:55 GMT
Connection: close
Content-Length: 0
Run Code Online (Sandbox Code Playgroud)

服务器将表现为没有错误:

Sep 5, 2013 11:27:46 AM org.glassfish.grizzly.http.server.HttpServer start
INFO: [HttpServer] Started.
Jersey app started with WADL available at http://localhost:8080/application.wadl
Hit enter to stop it...
Run Code Online (Sandbox Code Playgroud)

我尝试使用日志配置文件:

-Djava.util.logging.config.file=log.conf
Run Code Online (Sandbox Code Playgroud)

这会产生大量输出,但仍然没有显示任何异常.

我试过调查Grizzly配置,但我找不到办法关闭优雅的错误处理.理想情况下,我希望服务器抛出异常.关于我缺少什么的任何建议?

这是我的主要代码:

import org.glassfish.grizzly.http.server.HttpServer;
import org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpServerFactory;
import org.glassfish.jersey.moxy.json.MoxyJsonConfig;
import org.glassfish.jersey.server.ResourceConfig;

import javax.ws.rs.ext.ContextResolver;
import javax.ws.rs.ext.Provider;

import java.io.IOException;
import java.net.URI;
import java.util.*;

public class Main {
    // Base URI the Grizzly HTTP server …
Run Code Online (Sandbox Code Playgroud)

java logging exception jersey grizzly

7
推荐指数
1
解决办法
7374
查看次数

Jersey ...如何记录所有异常,但仍然调用ExceptionMappers

我有点束缚......想要我的蛋糕,也吃它.

我想记录我的应用程序抛出的所有异常.因此,如果某人遇到错误的URL,我想将堆栈跟踪记录到SLF4J.

所以你可能在想,'嘿,这很容易,只需实现一个异常映射器并记录异常."所以我做了:

public class RestExceptionMapper implements ExceptionMapper<java.lang.Exception> {
    private static final Logger log = LoggerFactory.getLogger(RestExceptionMapper.class);

    /**
     * {@inheritDoc}
     */
    @Override
    public Response toResponse(Exception exception) {
        log.error("toResponse() caught exception", exception);
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

如果你这样做,当有人输入错误的URL时,而不是404错误,他们会得到500错误.人们会猜测返回null会将异常传播到链处理程序之下,但Jersey不会这样做.它实际上提供了很少的信息,为什么它会选择一个处理程序而不是另

有没有人遇到过这个问题,你是怎么解决的?

java rest jax-rs jersey java-ee

7
推荐指数
2
解决办法
5557
查看次数

如果在控制器中某处引发异常,是否执行ContainerResponseFilter?

我有一个基于RestEasy的服务,其中正在ContainerResponseFilter中进行一些清理工作。问题是,如果资源抛出了未知的运行时异常(即我没有映射器的异常),则ContainerResponseFilter永远不会执行。

这是预期的行为吗?有没有解决方法?我在看以下问题(乔纳斯的回答):
如何在RESTful JAX-RS Web服务中记录未捕获的异常?

并且即使在控制器中引发异常时,看起来好像也会执行ContainerResponseFilter吗?

我想念什么吗?

jax-rs resteasy

5
推荐指数
1
解决办法
470
查看次数

如何在Java中捕获外部jar的异常

我尝试使用mallet 库运行 LDA 算法。当我尝试使用一组参数运行 LDA 时,一切正常,但使用另一组参数时,出现此错误:

09-Oct-2014 23:50:24.354 INFO [http-nio-8084-exec-127] cc.mallet.topics.ParallelTopicModel.estimate <50> LL/token: -8.73265 
09-Oct-2014 23:50:24.657 INFO [http-nio-8084-exec-127] null.null [beta: 0.00795]  
09-Oct-2014 23:50:24.657 INFO [http-nio-8084-exec-127] null.null <60> LL/token: -8.6299 
09-Oct-2014 23:50:24.957 INFO [http-nio-8084-exec-127] cc.mallet.topics.ParallelTopicModel.estimate <70> LL/token: -8.61982 
09-Oct-2014 23:50:25.019 INFO [http-nio-8084-exec-127] null.null [beta: 0.00583]  
09-Oct-2014 23:50:25.263 INFO [http-nio-8084-exec-127] cc.mallet.topics.ParallelTopicModel.estimate <80> LL/token: -8.89656 
09-Oct-2014 23:50:25.402 INFO [http-nio-8084-exec-127] null.null [beta: 0.00484]

java.lang.ArrayIndexOutOfBoundsException: -1    at 
cc.mallet.topics.WorkerRunnable.sampleTopicsForOneDoc(WorkerRunnable.java:489)  at 
cc.mallet.topics.WorkerRunnable.run(WorkerRunnable.java:275)    at 
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)     at 
java.util.concurrent.FutureTask.run(FutureTask.java:266)    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) java.lang.ArrayIndexOutOfBoundsException: -1  at …
Run Code Online (Sandbox Code Playgroud)

java exception mallet

2
推荐指数
1
解决办法
5166
查看次数