You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by An...@nuernberger.de on 2003/11/06 10:27:35 UTC

org.apache.jasper.JasperException: Cannot find message resources under key org.apache.struts.action.MESSAGE

Hi there,
 i get the following message by start a jsp/java application which use
struts. (Tomcat 4.1.24)

My web.xml contains:

	<servlet>
		<servlet-name>ideal</servlet-name>
	
<servlet-class>org.tzi.ideal.ui.servlet.ExtendedActionServlet</servlet-class
>
		<init-param>
			<param-name>config</param-name>
	
<param-value>/WEB-INF/struts-config.xml</param-value>
		</init-param>
		<init-param>
			<param-name>debug</param-name>
			<param-value>3</param-value>
		</init-param>
		<init-param>
			<param-name>detail</param-name>
			<param-value>3</param-value>
		</init-param>
		<init-param>
			<param-name>configFileName</param-name>
			<param-value>/WEB-INF/config.cfg</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>ideal</servlet-name>
		<url-pattern>*.do</url-pattern>
	</servlet-mapping>
	<session-config>
		<session-timeout>60</session-timeout>
	</session-config>
	<welcome-file-list>
		<welcome-file>jsp/index.jsp</welcome-file>
	</welcome-file-list>
	<taglib>
		<taglib-uri>/WEB-INF/tlds/struts-bean.tld</taglib-uri>
	
<taglib-location>/WEB-INF/tlds/struts-bean.tld</taglib-location>
	</taglib>
	<taglib>
		<taglib-uri>/WEB-INF/tlds/struts-html.tld</taglib-uri>
	
<taglib-location>/WEB-INF/tlds/struts-html.tld</taglib-location>
	</taglib>
	<taglib>
		<taglib-uri>/WEB-INF/tlds/struts-logic.tld</taglib-uri>
	
<taglib-location>/WEB-INF/tlds/struts-logic.tld</taglib-location>
	</taglib>
	<taglib>
		<taglib-uri>/WEB-INF/tlds/struts-nested.tld</taglib-uri>
	
<taglib-location>/WEB-INF/tlds/struts-nested.tld</taglib-location>
	</taglib>
	<taglib>
		<taglib-uri>/WEB-INF/tlds/struts-template.tld</taglib-uri>
	
<taglib-location>/WEB-INF/tlds/struts-template.tld</taglib-location>
	</taglib>
	<taglib>
		<taglib-uri>/WEB-INF/tlds/struts-tiles.tld</taglib-uri>
	
<taglib-location>/WEB-INF/tlds/struts-tiles.tld</taglib-location>
	</taglib>
	<taglib>
	
<taglib-uri>http://jakarta.apache.org/taglibs/log-1.0</taglib-uri>
	
<taglib-location>/WEB-INF/tlds/taglibs-log.tld</taglib-location>
	</taglib>
	<taglib>
	
<taglib-uri>http://jakarta.apache.org/taglibs/xtags-1.0</taglib-uri>
	
<taglib-location>/WEB-INF/tlds/taglibs-xtags.tld</taglib-location>
	</taglib>
</web-app>

My struts-config.xml contains:

<struts-config>
	<form-beans>
		<form-bean name="loginUserForm"
type="org.tzi.ideal.ui.form.LoginUserForm"/>
		<form-bean name="registerUserForm"
type="org.tzi.ideal.ui.form.RegisterUserForm"/>
		<form-bean name="showCategoriesForm"
type="org.tzi.ideal.ui.form.ShowCategoriesForm"/>
		<form-bean name="addMetadataForm"
type="org.tzi.ideal.ui.form.AddMetadataForm"/>
		<form-bean name="modifyCategoryNameForm"
type="org.tzi.ideal.ui.form.ModifyCategoryNameForm"/>
		<form-bean name="deleteMetadataForm"
type="org.tzi.ideal.ui.form.DeleteMetadataForm"/>
		<form-bean name="deleteCategoryForm"
type="org.tzi.ideal.ui.form.DeleteCategoryForm"/>
		<form-bean name="showModifyCategoryForm"
type="org.tzi.ideal.ui.form.ShowModifyCategoryForm"/>
		<form-bean name="commitFeedbackForm"
type="org.tzi.ideal.ui.form.CommitFeedbackForm"/>
		<form-bean name="showIcoForm"
type="org.tzi.ideal.ui.form.ShowIcoForm"/>
	</form-beans>
	<global-forwards>
		<forward name="showLogin" path="/jsp/login.jsp"
redirect="true"/>
		<forward name="showRegistration" path="/jsp/register.jsp"
redirect="true"/>
		<forward name="showRegisterSuccessful"
path="/jsp/register_success.jsp" redirect="true"/>		
		<forward name="showIco" path="/jsp/ico.jsp"
redirect="true"/>
		<forward name="showCategories" path="/jsp/category.jsp"
redirect="true"/>	
		<forward name="showCreateCategory"
path="/jsp/category_create.jsp" redirect="true"/>
		<forward name="showModifyCategory"
path="/jsp/category_modify.jsp" redirect="true"/>
		<forward name="showModifyCategoryOverview"
path="/jsp/category_modify_overview.jsp" redirect="true"/>
		<forward name="showNavigation" path="/jsp/navigation.jsp"
redirect="true"/>
		<forward name="error" path="/jsp/error.jsp"
redirect="true"/>
	</global-forwards>
	<action-mappings>
		<action path="/repaintMain"
type="org.tzi.ideal.ui.action.RepaintMainAction" validate="false"/>
		<action path="/showRegistration"
type="org.tzi.ideal.ui.action.ShowRegistrationAction" validate="false"/>
		<action path="/registerUser" input="/jsp/register.jsp"
name="registerUserForm" scope="request"
type="org.tzi.ideal.ui.action.RegisterUserAction" validate="true"/>
		<action path="/showLogin"
type="org.tzi.ideal.ui.action.ShowLoginAction" validate="false"/>
		<action path="/loginUser" input="/jsp/login.jsp"
name="loginUserForm" scope="request"
type="org.tzi.ideal.ui.action.LoginUserAction" validate="true"/>
		<action path="/logoutUser"
type="org.tzi.ideal.ui.action.LogoutUserAction" validate="false"/>
		<action path="/showIco" name="showIcoForm" scope="request"
type="org.tzi.ideal.ui.action.ShowIcoAction" validate="true"/>
		<action path="/showCategories" name="showCategoriesForm"
scope="request" type="org.tzi.ideal.ui.action.ShowCategoriesAction"
validate="true"/>
		<action path="/showClusterAsVRML"
type="org.tzi.ideal.ui.action.ShowClusterAsVRMLAction" validate="false"/>
		<action path="/showCreateCategory"
type="org.tzi.ideal.ui.action.ShowCreateCategoryAction" validate="false"/>
		<action path="/showModifyCategory"
name="showModifyCategoryForm" scope= "request"
type="org.tzi.ideal.ui.action.ShowModifyCategoryAction" validate="false"/>
		<action path="/showModifyCategoryOverview"
type="org.tzi.ideal.ui.action.ShowModifyCategoryOverviewAction"
validate="false"/>
		<action path="/addMetadataToANewCategory"
input="/jsp/category_create.jsp" name="addMetadataForm" scope="request"
type="org.tzi.ideal.ui.action.AddMetadataAction" validate="true"/>
		<action path="/addMetadataToACategory"
input="/jsp/category_modify.jsp" name="addMetadataForm" scope="request"
type="org.tzi.ideal.ui.action.AddMetadataAction" validate="true"/>
		<action path="/deleteMetadataFromANewCategory"
input="/jsp/category_create.jsp" name="deleteMetadataForm"
type="org.tzi.ideal.ui.action.DeleteMetadataAction" validate="true"/>
		<action path="/deleteMetadataFromACategory"
input="/jsp/category_modify.jsp" name="deleteMetadataForm"
type="org.tzi.ideal.ui.action.DeleteMetadataAction" validate="true"/>
		<action path="/addNewCategoryName"
input="/jsp/category_create.jsp" name="modifyCategoryNameForm"
scope="request" type="org.tzi.ideal.ui.action.ModifyCategoryNameAction"
validate="true"/>
		<action path="/modifyOldCategoryName"
input="/jsp/category_modify.jsp" name="modifyCategoryNameForm"
scope="request" type="org.tzi.ideal.ui.action.ModifyCategoryNameAction"
validate="true"/>
		<action path="/showAddNewCategoryName"
input="/jsp/category_create.jsp"
type="org.tzi.ideal.ui.action.ShowModifyCategoryNameAction"
validate="false"/>
		<action path="/showModifyOldCategoryName"
input="/jsp/category_modify.jsp"
type="org.tzi.ideal.ui.action.ShowModifyCategoryNameAction"
validate="false"/>
		<action path="/createCategory"
input="/jsp/category_create.jsp" scope="request"
type="org.tzi.ideal.ui.action.ModifyCategoryAction" validate="true"/>
		<action path="/modifyCategory"
input="/jsp/category_modify.jsp" scope="request"
type="org.tzi.ideal.ui.action.ModifyCategoryAction" validate="true"/>
		<action path="/deleteCategory" name="deleteCategoryForm"
scope="request" type="org.tzi.ideal.ui.action.DeleteCategoryAction"
validate="true"/>
		<action path="/commitFeedback" input="/jsp/navigation.jsp"
name="commitFeedbackForm" scope="request"
type="org.tzi.ideal.ui.action.CommitFeedbackAction" validate="true"/>
		<action path="/search"
type="org.tzi.ideal.ui.action.SearchAction" validate="false"/>
		<action path="/image"
type="org.tzi.ideal.ui.action.RenderImageAction" validate="false"/>
		<action path="/table"
type="org.tzi.ideal.ui.action.RenderTableAction" validate="false"/>
	</action-mappings>
	<message-resources parameter="IdealMessageResources"/>
</struts-config>

thx for you help !

bye
Andi



Hinweis::
Der Inhalt dieser Mail ist vertraulich und nur fuer den Adressaten bzw.
dessen Vertreter/in bestimmt. Anderen Personen ist es nicht gestattet den Inhalt dieser Mail zu publizieren, zu verwerten, zu kopieren oder weiterzugeben. Falls Sie nicht der angegebene Adressat oder dessen Vertreter/in sind, dann senden Sie bitte die E-Mail mit einem Vermerk an den Absender zurueck (Antwort-Funktion bzw. reply email). Entfernen Sie bitte danach die Nachricht aus Ihrem System.
Informationen oder sonstige Aussagen an den Adressaten unterliegen dem Recht des Geschaeftes, zu dem sie gegeben worden sind, insbesondere den Allgemeinen Geschaefts- bzw. Versicherungsbedingungen und gegebenenfalls einer individuellen Vereinbarung. Der Inhalt der E-Mail ist nur rechtsverbindlich, wenn wir ihn dem betreffenden Adressaten schriftlich bestaetigen.


Re: org.apache.jasper.JasperException: Cannot find message resources under key org.apache.struts.action.MESSAGE

Posted by Dirk Markert <di...@dr-markert.de>.
Hello Andreas,

      do you have your IdealMessageResources file in your WEB-INF
      directory?

***************************************************************

ASnd> Hi there,
ASnd>  i get the following message by start a jsp/java application which use
ASnd> struts. (Tomcat 4.1.24)

ASnd> My web.xml contains:

ASnd>         <servlet>
ASnd>                 <servlet-name>ideal</servlet-name>
        
ASnd> <servlet-class>org.tzi.ideal.ui.servlet.ExtendedActionServlet</servlet-class
>>
ASnd>                 <init-param>
ASnd>                         <param-name>config</param-name>
        
ASnd> <param-value>/WEB-INF/struts-config.xml</param-value>
ASnd>                 </init-param>
ASnd>                 <init-param>
ASnd>                         <param-name>debug</param-name>
ASnd>                         <param-value>3</param-value>
ASnd>                 </init-param>
ASnd>                 <init-param>
ASnd>                         <param-name>detail</param-name>
ASnd>                         <param-value>3</param-value>
ASnd>                 </init-param>
ASnd>                 <init-param>
ASnd>                         <param-name>configFileName</param-name>
ASnd>                         <param-value>/WEB-INF/config.cfg</param-value>
ASnd>                 </init-param>
ASnd>                 <load-on-startup>1</load-on-startup>
ASnd>         </servlet>
ASnd>         <servlet-mapping>
ASnd>                 <servlet-name>ideal</servlet-name>
ASnd>                 <url-pattern>*.do</url-pattern>
ASnd>         </servlet-mapping>
ASnd>         <session-config>
ASnd>                 <session-timeout>60</session-timeout>
ASnd>         </session-config>
ASnd>         <welcome-file-list>
ASnd>                 <welcome-file>jsp/index.jsp</welcome-file>
ASnd>         </welcome-file-list>
ASnd>         <taglib>
ASnd>                 <taglib-uri>/WEB-INF/tlds/struts-bean.tld</taglib-uri>
        
ASnd> <taglib-location>/WEB-INF/tlds/struts-bean.tld</taglib-location>
ASnd>         </taglib>
ASnd>         <taglib>
ASnd>                 <taglib-uri>/WEB-INF/tlds/struts-html.tld</taglib-uri>
        
ASnd> <taglib-location>/WEB-INF/tlds/struts-html.tld</taglib-location>
ASnd>         </taglib>
ASnd>         <taglib>
ASnd>                 <taglib-uri>/WEB-INF/tlds/struts-logic.tld</taglib-uri>
        
ASnd> <taglib-location>/WEB-INF/tlds/struts-logic.tld</taglib-location>
ASnd>         </taglib>
ASnd>         <taglib>
ASnd>                 <taglib-uri>/WEB-INF/tlds/struts-nested.tld</taglib-uri>
        
ASnd> <taglib-location>/WEB-INF/tlds/struts-nested.tld</taglib-location>
ASnd>         </taglib>
ASnd>         <taglib>
ASnd>                 <taglib-uri>/WEB-INF/tlds/struts-template.tld</taglib-uri>
        
ASnd> <taglib-location>/WEB-INF/tlds/struts-template.tld</taglib-location>
ASnd>         </taglib>
ASnd>         <taglib>
ASnd>                 <taglib-uri>/WEB-INF/tlds/struts-tiles.tld</taglib-uri>
        
ASnd> <taglib-location>/WEB-INF/tlds/struts-tiles.tld</taglib-location>
ASnd>         </taglib>
ASnd>         <taglib>
        
ASnd> <taglib-uri>http://jakarta.apache.org/taglibs/log-1.0</taglib-uri>
        
ASnd> <taglib-location>/WEB-INF/tlds/taglibs-log.tld</taglib-location>
ASnd>         </taglib>
ASnd>         <taglib>
        
ASnd> <taglib-uri>http://jakarta.apache.org/taglibs/xtags-1.0</taglib-uri>
        
ASnd> <taglib-location>/WEB-INF/tlds/taglibs-xtags.tld</taglib-location>
ASnd>         </taglib>
ASnd> </web-app>

ASnd> My struts-config.xml contains:

ASnd> <struts-config>
ASnd>         <form-beans>
ASnd>                 <form-bean name="loginUserForm"
ASnd> type="org.tzi.ideal.ui.form.LoginUserForm"/>
ASnd>                 <form-bean name="registerUserForm"
ASnd> type="org.tzi.ideal.ui.form.RegisterUserForm"/>
ASnd>                 <form-bean name="showCategoriesForm"
ASnd> type="org.tzi.ideal.ui.form.ShowCategoriesForm"/>
ASnd>                 <form-bean name="addMetadataForm"
ASnd> type="org.tzi.ideal.ui.form.AddMetadataForm"/>
ASnd>                 <form-bean name="modifyCategoryNameForm"
ASnd> type="org.tzi.ideal.ui.form.ModifyCategoryNameForm"/>
ASnd>                 <form-bean name="deleteMetadataForm"
ASnd> type="org.tzi.ideal.ui.form.DeleteMetadataForm"/>
ASnd>                 <form-bean name="deleteCategoryForm"
ASnd> type="org.tzi.ideal.ui.form.DeleteCategoryForm"/>
ASnd>                 <form-bean name="showModifyCategoryForm"
ASnd> type="org.tzi.ideal.ui.form.ShowModifyCategoryForm"/>
ASnd>                 <form-bean name="commitFeedbackForm"
ASnd> type="org.tzi.ideal.ui.form.CommitFeedbackForm"/>
ASnd>                 <form-bean name="showIcoForm"
ASnd> type="org.tzi.ideal.ui.form.ShowIcoForm"/>
ASnd>         </form-beans>
ASnd>         <global-forwards>
ASnd>                 <forward name="showLogin" path="/jsp/login.jsp"
redirect="true"/>>
ASnd>                 <forward name="showRegistration" path="/jsp/register.jsp"
redirect="true"/>>
ASnd>                 <forward name="showRegisterSuccessful"
ASnd> path="/jsp/register_success.jsp" redirect="true"/>              
ASnd>                 <forward name="showIco" path="/jsp/ico.jsp"
redirect="true"/>>
ASnd>                 <forward name="showCategories" path="/jsp/category.jsp"
redirect="true"/>>       
ASnd>                 <forward name="showCreateCategory"
ASnd> path="/jsp/category_create.jsp" redirect="true"/>
ASnd>                 <forward name="showModifyCategory"
ASnd> path="/jsp/category_modify.jsp" redirect="true"/>
ASnd>                 <forward name="showModifyCategoryOverview"
ASnd> path="/jsp/category_modify_overview.jsp" redirect="true"/>
ASnd>                 <forward name="showNavigation" path="/jsp/navigation.jsp"
redirect="true"/>>
ASnd>                 <forward name="error" path="/jsp/error.jsp"
redirect="true"/>>
ASnd>         </global-forwards>
ASnd>         <action-mappings>
ASnd>                 <action path="/repaintMain"
ASnd> type="org.tzi.ideal.ui.action.RepaintMainAction" validate="false"/>
ASnd>                 <action path="/showRegistration"
ASnd> type="org.tzi.ideal.ui.action.ShowRegistrationAction" validate="false"/>
ASnd>                 <action path="/registerUser" input="/jsp/register.jsp"
ASnd> name="registerUserForm" scope="request"
ASnd> type="org.tzi.ideal.ui.action.RegisterUserAction" validate="true"/>
ASnd>                 <action path="/showLogin"
ASnd> type="org.tzi.ideal.ui.action.ShowLoginAction" validate="false"/>
ASnd>                 <action path="/loginUser" input="/jsp/login.jsp"
ASnd> name="loginUserForm" scope="request"
ASnd> type="org.tzi.ideal.ui.action.LoginUserAction" validate="true"/>
ASnd>                 <action path="/logoutUser"
ASnd> type="org.tzi.ideal.ui.action.LogoutUserAction" validate="false"/>
ASnd>                 <action path="/showIco" name="showIcoForm" scope="request"
ASnd> type="org.tzi.ideal.ui.action.ShowIcoAction" validate="true"/>
ASnd>                 <action path="/showCategories" name="showCategoriesForm"
ASnd> scope="request" type="org.tzi.ideal.ui.action.ShowCategoriesAction"
validate="true"/>>
ASnd>                 <action path="/showClusterAsVRML"
ASnd> type="org.tzi.ideal.ui.action.ShowClusterAsVRMLAction" validate="false"/>
ASnd>                 <action path="/showCreateCategory"
ASnd> type="org.tzi.ideal.ui.action.ShowCreateCategoryAction" validate="false"/>
ASnd>                 <action path="/showModifyCategory"
ASnd> name="showModifyCategoryForm" scope= "request"
ASnd> type="org.tzi.ideal.ui.action.ShowModifyCategoryAction" validate="false"/>
ASnd>                 <action path="/showModifyCategoryOverview"
ASnd> type="org.tzi.ideal.ui.action.ShowModifyCategoryOverviewAction"
validate="false"/>>
ASnd>                 <action path="/addMetadataToANewCategory"
ASnd> input="/jsp/category_create.jsp" name="addMetadataForm" scope="request"
ASnd> type="org.tzi.ideal.ui.action.AddMetadataAction" validate="true"/>
ASnd>                 <action path="/addMetadataToACategory"
ASnd> input="/jsp/category_modify.jsp" name="addMetadataForm" scope="request"
ASnd> type="org.tzi.ideal.ui.action.AddMetadataAction" validate="true"/>
ASnd>                 <action path="/deleteMetadataFromANewCategory"
ASnd> input="/jsp/category_create.jsp" name="deleteMetadataForm"
ASnd> type="org.tzi.ideal.ui.action.DeleteMetadataAction" validate="true"/>
ASnd>                 <action path="/deleteMetadataFromACategory"
ASnd> input="/jsp/category_modify.jsp" name="deleteMetadataForm"
ASnd> type="org.tzi.ideal.ui.action.DeleteMetadataAction" validate="true"/>
ASnd>                 <action path="/addNewCategoryName"
ASnd> input="/jsp/category_create.jsp" name="modifyCategoryNameForm"
ASnd> scope="request" type="org.tzi.ideal.ui.action.ModifyCategoryNameAction"
validate="true"/>>
ASnd>                 <action path="/modifyOldCategoryName"
ASnd> input="/jsp/category_modify.jsp" name="modifyCategoryNameForm"
ASnd> scope="request" type="org.tzi.ideal.ui.action.ModifyCategoryNameAction"
validate="true"/>>
ASnd>                 <action path="/showAddNewCategoryName"
ASnd> input="/jsp/category_create.jsp"
ASnd> type="org.tzi.ideal.ui.action.ShowModifyCategoryNameAction"
validate="false"/>>
ASnd>                 <action path="/showModifyOldCategoryName"
ASnd> input="/jsp/category_modify.jsp"
ASnd> type="org.tzi.ideal.ui.action.ShowModifyCategoryNameAction"
validate="false"/>>
ASnd>                 <action path="/createCategory"
ASnd> input="/jsp/category_create.jsp" scope="request"
ASnd> type="org.tzi.ideal.ui.action.ModifyCategoryAction" validate="true"/>
ASnd>                 <action path="/modifyCategory"
ASnd> input="/jsp/category_modify.jsp" scope="request"
ASnd> type="org.tzi.ideal.ui.action.ModifyCategoryAction" validate="true"/>
ASnd>                 <action path="/deleteCategory" name="deleteCategoryForm"
ASnd> scope="request" type="org.tzi.ideal.ui.action.DeleteCategoryAction"
validate="true"/>>
ASnd>                 <action path="/commitFeedback" input="/jsp/navigation.jsp"
ASnd> name="commitFeedbackForm" scope="request"
ASnd> type="org.tzi.ideal.ui.action.CommitFeedbackAction" validate="true"/>
ASnd>                 <action path="/search"
ASnd> type="org.tzi.ideal.ui.action.SearchAction" validate="false"/>
ASnd>                 <action path="/image"
ASnd> type="org.tzi.ideal.ui.action.RenderImageAction" validate="false"/>
ASnd>                 <action path="/table"
ASnd> type="org.tzi.ideal.ui.action.RenderTableAction" validate="false"/>
ASnd>         </action-mappings>
ASnd>         <message-resources parameter="IdealMessageResources"/>
ASnd> </struts-config>

ASnd> thx for you help !

ASnd> bye
ASnd> Andi



ASnd> Hinweis::
ASnd> Der Inhalt dieser Mail ist vertraulich und nur fuer den Adressaten bzw.
ASnd> dessen Vertreter/in bestimmt. Anderen Personen ist es nicht gestattet den Inhalt dieser Mail zu publizieren, zu verwerten, zu kopieren oder weiterzugeben. Falls Sie nicht der angegebene
ASnd> Adressat oder dessen Vertreter/in sind, dann senden Sie bitte die E-Mail mit einem Vermerk an den Absender zurueck (Antwort-Funktion bzw. reply email). Entfernen Sie bitte danach die Nachricht
ASnd> aus Ihrem System.
ASnd> Informationen oder sonstige Aussagen an den Adressaten unterliegen dem Recht des Geschaeftes, zu dem sie gegeben worden sind, insbesondere den Allgemeinen Geschaefts- bzw.
ASnd> Versicherungsbedingungen und gegebenenfalls einer individuellen Vereinbarung. Der Inhalt der E-Mail ist nur rechtsverbindlich, wenn wir ihn dem betreffenden Adressaten schriftlich bestaetigen.




Regards,
Dirk

+------- Quality leads ---------------------------------------+
| Dirk Markert                     dirk.markert@dr-markert.de |
| Dr. Markert Softwaretechnik AG                              |
| Joseph-von-Fraunhofer-Str. 20                               |
| 44227 Dortmund                                              |
+---------------------------------->>>>>>> to success! <<<<<<-+ 


---------------------------------------------------------------------
To unsubscribe, e-mail: struts-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: struts-user-help@jakarta.apache.org