Проблема при развертывании приложения Struts, работающего в weblogic 8.1, в weblogic 11g - PullRequest
1 голос
/ 24 марта 2011

Если я разверну файл ear на моем локальном сервере weblogic 8.1, он будет работать отлично. Но при развертывании его на Weblogic 11g выдает ошибку.

Вот сценарий -

На первой странице приложения вас попросят выбрать пользователя. При выборе пользователя он выполнит действие RolesAction и перенаправит вас на страницу ролей, где роли, связанные с пользователем, появятся в выпадающем списке.

После развертывания приложения Argus и выбора пользователя на тестовой странице входа в систему выполняется весь класс RolesAction, но вместо того, чтобы в раскрывающемся списке получить страницу с ролями, связанными с этим пользователем, я получаю страницу ошибки «Ошибка 404 - не найдена» и в лог-файл попадает ниже упомянутая ошибка.

<Mar 20, 2011 8:20:42 PM GMT> <Error> <HTTP> <BEA-101017> <[ServletContext@406125315[app:ArgusDEV module:ArgusWeb path:/ArgusWeb spec-version:null]] Root cause of ServletException.

java.lang.NoSuchMethodError: org/apache/struts/config/ForwardConfig.getContextRelative()Z

            at org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:298)

            at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:232)

            at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)

            at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)

            at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)

Любые входы ??

Мой Roles.jsp имеет объявление tld, как показано ниже:

<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>

Видите ли вы какие-либо проблемы с заявлением TLD?

Мысли

Спасибо!

EDIT:

Первая страница, которая появляется в приложении, в котором вы выбираете пользователя, - это Login.jsp. В этом jsp tlds объявляются как показано ниже: Эта страница не отображается. Тем не менее, на странице role.jsp выдается ошибка.

Объявление Login.jsp:

<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>

Оба jsp имеют одинаковое объявление tld, и отображается 1, тогда как другой выдает ошибку.

Идеи

EDIT:

Roles.jsp

<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<link rel="stylesheet" type="text/css" href="css/arg.css" />


</head>
<form name="rolesForm" method="post">

<logic:present name="VIEW_BEAN" scope="request">
<logic:notEmpty name="VIEW_BEAN" property="userId" scope="request">
    <input type="hidden" name="Id" value="<bean:write name="VIEW_BEAN"     property="userId"/>">
</logic:notEmpty>
</logic:present>
<table border="0" cellpadding="1" cellspacing="0" width="95%" bgcolor="#FFFFFF">
 <tr>
<td height="19">&nbsp;</td>
 </tr>
<tr>
<td width="100%" align="center" class="epi-dataTableLiteNew">
 <font size="2"><b>Select a Role:</b>&nbsp;</font>
 <select size="1" name="roleType" class="textbox" ">
            <option value="">Select ---</option>
            <logic:notEmpty name="VIEW_BEAN" property="roleList" scope="request">
                <logic:iterate id="record" name="VIEW_BEAN"     property="roleList" scope="request">
                <option value="<bean:write name="record"     property="roleID"/>"><bean:write name="record" property="roleName"/></b></option>
                </logic:iterate>                
            </logic:notEmpty>
        </select>
<input type="submit" value="Submit" onClick="return selectRole()" style="border:1px     ridge #000000; height:22px; font-weight:bold cellpadding="0" cellspacing="0" 100%>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
</td>

</tr>
</table>
</form>     
</body>
</html>

Login.jsp

<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<html>
<head>
</head>
<%@ page 
language="java"
%>
<meta http-equiv="Content-Type" content="text/html" />
<link rel="stylesheet" type="text/css" href="css/arg.css" />

<title>Home</title>


 <%
  String userid=request.getHeader("user");
  String isLoginPage=request.getParameter("isUser");

%>
<!-- Please select the user from the list and press continue: &nbsp; -->
 <form name="homePageForm" action="RolesAction.do" method="post">

 </form>
</body>
</html>

EDIT:

распорка-config.xml

<action
  path="/roles"
  name="HomePageForm"
  type="org.springframework.web.struts.DelegatingActionProxy"
  scope="request">
  <forward name="success" path=".rolespage"/>
</action>

Действие, которое будет вызываться для шаблона url, находится в файле spring.xml.

Ответы [ 2 ]

2 голосов
/ 30 марта 2011

Проверил папку lib приложения, чтобы найти struts-core-1.3.8.jar, а также struts.jar. Из-за этого было сгенерировано исключение.

struts.jar имеет класс forwardConfig и метод getContextRelative ().

struts-core-1.3.8.jar имеет класс forwardConfig, но не метод getContextRelative ().

Это было причиной проблемы.

Поэтому удалите struts.jar, чтобы использовалась версия 1.3.8.

- дополнительно добавить в приложение struts-extras-1.3.8.jar lib

- В jsp исправьте тег lib uri следующим образом:

<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %> 

<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %> 

Это решает проблему

1 голос
/ 24 марта 2011

Struts 1.1 <% @ taglib uri = "http://jakarta.apache.org/struts/tags-html" prefix =" html "%>

Struts 1.2.x <% @ taglib uri = "http://struts.apache.org/tags-html" prefix =" html "%>

Пожалуйста, используйте вышеуказанный тег lib uri. Надеюсь, решит вашу проблему.

...