Утверждение Java искажается с помощью Weblogic и Struts 2 - PullRequest
3 голосов
/ 16 марта 2012

Я начал использовать утверждения в своем приложении Java EE 5, и пока работает assert, трассировка стека и сообщения - нет. Вот мой код:

  assert 4 == outputList.size() : "outputList is not size 4: " + outputList.size();

Когда я создаю список размером 3, он выдает следующее:

<Error> <HTTP> <BEA-101020> <[weblogic.servlet.internal.WebAppServletContext@6ea53502 - appName: 'MyPortal', name: 'myportal', context-path: '/myportal'] Servlet failed with Exception
java.lang.NullPointerException
at weblogic.servlet.internal.ServletResponseImpl.sendError(ServletResponseImpl.java:610)
at org.apache.struts2.dispatcher.Dispatcher.sendError(Dispatcher.java:770)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:505)
at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3242)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2010)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:1916)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1366)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:181)
>

Он не выполняет чистую трассировку стека и не имеет сообщения подтверждения.

Есть идеи?

1 Ответ

1 голос
/ 16 марта 2012

Это не утверждение, которое выбрасывает это исключение.Вы можете использовать assert ключевое слово, но JVM обычно игнорирует его, если вы хотите, чтобы JVM не игнорировала его, вы должны использовать java -enableassertions или java -ea.

Таким образом, вы должны добавить этот параметр Java вваш JAVA_OPTS.

...