我有一个在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)
有没有人知道这可能是什么?
我有一个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吗?
谢谢!
我有一个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) 我想将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?
java ×3
spring-mvc ×2
aspectj ×1
cdi ×1
jsp ×1
mockito ×1
servlets ×1
spring-boot ×1
spring-test ×1
tomcat8 ×1
ubuntu ×1
usebean ×1