Weblogic 10.3 - Сбой сервлета с исключением - PullRequest
2 голосов
/ 29 октября 2010

Я пытаюсь обновить приложение с Weblogic 8.1 SP 6 до Weblogic 10.3. Для этого я установил Weblogic 10.3 и создал домен. WLS 10.3 успешно запущен с моего домена. Я перекомпилировал код в Java 1.6 и успешно развернул его без каких-либо изменений.

Я развернул приложение и пытаюсь запустить страницу приветствия (входа в систему) приложения.

Тогда я вижу следующую ошибку:

Predefined Constants Object: com.abc.xyz272.businessclasses.PredefinedConstants@3d80183
DataSourceName='null'
sessionTimeOutLimit='36000'
00:39:31==>Servlet:  getRemoteUser=null
00:39:31==>Servlet:  getHeader=null
00:39:31==>count=0
<Oct 29, 2010 12:39:31 AM MDT> <Error> <HTTP> <BEA-101020> <[weblogic.servlet.internal.WebAppServletContext@2e28f75 - appName: 'mbqccrpt', name: 'xyzControllerServlet', context-path: '/xyzControllerServlet', spec-version: 'null'] Servlet failed with Exception
java.lang.NullPointerException
        at com.abc.xyz272.servlets.xyzControllerServlet.processRequest(Unknown Source)
        at com.abc.xyz272.servlets.xyzControllerServlet.doPost(Unknown Source)
        at com.abc.xyz272.servlets.xyzControllerServlet.doGet(Unknown Source)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
        Truncated. see log file for complete stacktrace

У меня есть еще один вопрос. Приложение, работающее на Weblogic 8.1, использует сервер apache для запуска статических страниц. Для обновления приложения в weblogic 10.3 нам нужен сервер apache?

Ответы [ 3 ]

5 голосов
/ 10 ноября 2010

Я могу ответить на 2-ю часть вашего вопроса.

Основная цель, обычно используемая для сервера Apache, работающего с Weblogic, - это выгружать статическое содержимое, такое как изображения, HTML, JS, CSS-файлы, в сеть Apache.сервер.В Weblogic передаются только динамические запросы, что снижает трафик, особенно через межсетевой экран.

Это архитектурное решение, которое не зависит от версии Weblogic .Скорее, это зависит от определенных проблем, таких как кластеризация серверов приложений (с использованием Apache в качестве балансировщика нагрузки), объема статических данных, поскольку Apache довольно быстро обслуживает статические данные - так зачем переносить эту нагрузку на Weblogic.

ИЧто касается вашего NullPointerException, похоже, это потому, что ваш источник данных не определен должным образом (он отображается как ноль), но вы вызываете некоторые операции с ним

2 голосов
/ 19 октября 2013

Несколько недель назад, я также был здесь на этой странице, отфильтровывая Интернет для подходящего решения для этой же проблемы. spec-version: 'null'] Сервлет не работал с Exception , до того временикогда все остальное не работало, кроме решения, которое я нашел после многих усилий.

Я столкнулся с этой проблемой при переносе одного приложения с сервера приложений Oracle 10g на Weblogic 10.3.5 .

В соответствии с легендарной практикой, при выполнении миграции мы поместили один файл weblogic.xml в папку / WEB-INF / , и это былоактуальная проблема.Я просто заменил этот неправильный файл weblogic.xml своей собственной версией weblogic.xml , и все работало нормально.

Даже при том, что неисправен weblogic.В файле xml было много других элементов внутри корневого элемента по причинам, наиболее известным человеку, который его первоначально поместил, в моей версии этого файла DD у меня был только корневой элемент.И вот наконец проблема была решена.Так что стоит принять это во внимание.

1 голос
/ 22 мая 2012

getRemoteUser (), возвращая null:

Поскольку метод getRemoteUser () устарел в Weblogic 10.3, он вернет null, когда пользователи получат доступ к приложению.Чтобы избежать этой проблемы, замените getRemoteUser() методом getHeader(“proxy-remote-user”), чтобы вернуть удаленного пользователя в виде строки.

String usr= request.getHeader("proxy-remote-user");

Проблема с отображением пути сервлета:

У нас есть следующее отображение сервлета в web.xml, которое отлично работало в Weblogic 8.1

<servlet-mapping> in web.xml 
  <servlet>
      <servlet-name>ServletName</servlet-name>
      <servlet-class>com.abc.servlets.servletname</servlet-class>
  </servlet>
   <servlet-mapping>
      <servlet-name> ServletName </servlet-name>
      <url-pattern>/*.*</url-pattern>
  </servlet-mapping>

Но после перехода на 10.3 то же самое сопоставление сервлета не работает, так как запрос входит в бесконечный цикл при запуске домашней страницы приложения.Поскольку веб-приложение использует Servlet в качестве контроллера, все запросы попадают в контроллер, а затем направляются в соответствующие JSP.Чтобы избежать этой проблемы, мы заменили шаблон URL «/ *» на «/» в отображении сервлета, как показано ниже.

 <servlet-mapping>
      <servlet-name> ServletName </servlet-name>
      <url-pattern>/ServletName </url-pattern>
 </servlet-mapping>
...