小编Vad*_*dOs的帖子

java.lang.IllegalArgumentException:方法名称中找到无效字符(CR或LF)

我有一个在Tomcat8上运行的Spring MVC应用程序.一天或两天后,我的日志文件中出现异常

15-Jun-2016 10:43:39.832 INFO [http-nio-8080-exec-50] org.apache.coyote.http11.AbstractHttp11Processor.process Error parsing HTTP request header
 Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.
 java.lang.IllegalArgumentException: Invalid character (CR or LF) found in method name
    at org.apache.coyote.http11.AbstractNioInputBuffer.parseRequestLine(AbstractNioInputBuffer.java:228)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1009)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1502)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1458)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)
Run Code Online (Sandbox Code Playgroud)

有没有人知道这可能是什么?

java ubuntu spring-mvc tomcat8

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

没有处理程序在spring boot中发现异常和静态资源

我有一个Spring BootWeb应用程序,我在ControllerAdvice课堂上捕获自定义异常.问题是Spring Boot如果没有找到处理程序(它发送json回客户端),默认情况下不会抛出异常.

我要的是赶NoHandlerFoundException在我的ControllerAdvice课.为了实现这一点,我明确配置了

spring.mvc.throw-exception-if-no-handler-found=true
spring.resources.add-mappings=false
Run Code Online (Sandbox Code Playgroud)

这个技巧完成了这项工作,我NoHandlerFoundException现在可以抓住,但它禁止Spring自动配置静态资源的路径.所以我的所有静态资源现在都不能用于客户端.我试图使用一个没有帮助的配置来解决这个问题

spring.resources.static-locations=classpath:/resources/static/
Run Code Online (Sandbox Code Playgroud)

有人可以建议如何在Spring Boot禁用自动配置时映射静态资源spring.resources.add-mappings=false吗?

谢谢!

java spring-boot

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

如何在Spring MVC应用程序中测试Aspect

我有一个Spring MVC应用程序,在其中我使用Aspect来捕获所有控制器方法中的异常

@Component
@Aspect
public class ControllerExceptionAspect {

    private Logger logger;

    public ControllerExceptionAspect() {
       logger = Logger.getLogger(ControllerExceptionAspect.class);
    }

    public ControllerExceptionAspect(Logger logger) {
       this.logger = logger;
    }

    // Catching all exceptions from all methods in all controllers classes

    @AfterThrowing(pointcut = "execution(* com.my.package..controller..*(..))", throwing = "exception")
    public void afterThrowingAdvice(Exception exception) {
       logger.error("CONTROLLER ASPECT: EXCEPTION IN METHOD -> " +    
       exception.getClass());
    }
}
Run Code Online (Sandbox Code Playgroud)

Aspect可以正常工作,但是很遗憾,我无法对其进行测试。我尝试了很多次,但是在Controller中模拟异常后却无法获取如何捕获Aspect方法的信息

@SuppressWarnings("ALL")
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextHierarchy({
        @ContextConfiguration(classes = RootConfig.class),
        @ContextConfiguration(classes = WebConfig.class)
})
public class ControllerExceptionAspectTest {

    @Autowired
    ApplicationContext applicationContext;

    @Test …
Run Code Online (Sandbox Code Playgroud)

java aspectj spring-mvc spring-test mockito

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

通过<jsp:useBean>访问的会话范围的CDI bean似乎与servlet不同

我想将CDI SessionScoped bean注入JSP页面.

import javax.enterprise.context.SessionScoped;
import java.io.Serializable;

@SessionScoped
public class UserSessionBean implements Serializable {

    private String email = "email";

    public UserSessionBean(){}

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}
Run Code Online (Sandbox Code Playgroud)

当我以这种方式使用bean时,它工作正常,我在JSP页面上看到了初始值.

<jsp:useBean id="userSessionBean" class="package.UserSessionBean"/>
<jsp:getProperty name="userSessionBean" property="email"/>
Run Code Online (Sandbox Code Playgroud)

当我将相同的bean注入到我从API中的另一个servlet调用的服务中时,会出现问题.在这种情况下,我没有在JSP页面获得更新值.看起来我在JSP页面和使用@Inject注释的服务内部获得了不同的bean

任何人都可以建议如何在JSP和从servlet访问的服务层中使用相同的SessionScoped bean?

jsp servlets usebean cdi

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