Announcement Announcement Module
Collapse
No announcement yet.
404 on simple spring app on tomcat Page Title Module
Move Remove Collapse
X
Conversation Detail Module
Collapse
  • Filter
  • Time
  • Show
Clear All
new posts

  • 404 on simple spring app on tomcat

    I keep getting a 404 while trying to apply SSL to my Simple Spring app called SpringEncrypted.
    The root website (which is the tomcat welcome page) works with both http and https,
    but whenever I try to access http://localhost:8080/SpringEncrypted or https://localhost:8443/SpringEncrypted,
    it always give me a 404 error, I figured it might be a directory problem but i'm not familiar with how tomcat deploys its directory, and because it worked when I tried it on Eclipse. I'm hoping this might be a common problem people encounter with spring/tomcat combination.
    Helps would be appreciated :]

    Here's the directory structure that I have inside the .war file located on the Tomcat webapps folder:
    (META-INF)
    -- manifest.mf
    (WEB-INF)
    ---web.xml
    ---doraemon-servlet.xml
    ---logging.properties
    ---(classes)
    ------com/kernn/spring3/controller/helloWorldController.class
    ------com/kernn/spring3/controller/helloWorldController.java
    ---(lib)
    hello.html
    hello.jsp
    index.jsp

    I'm using Tomcat 7, Spring 3.1.2, and JDK 6

    web.xml
    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xmlns="http://java.sun.com/xml/ns/javaee"
    	xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    	id="WebApp_ID" version="2.5">
    
    	<display-name>Spring Encrypted</display-name>
    
    	<welcome-file-list>
    		<welcome-file>index.jsp</welcome-file>
    	</welcome-file-list>
    
    	<servlet>
    		<servlet-name>doraemon</servlet-name>
    		<servlet-class>
    			org.springframework.web.servlet.DispatcherServlet
    		</servlet-class>
    		<load-on-startup>1</load-on-startup>
    	</servlet>
    	<servlet-mapping>
    		<servlet-name>doraemon</servlet-name>
    		<url-pattern>*.html</url-pattern>
    	</servlet-mapping>  
    
    	<!--listener>  
        		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
      	</listener-->  
    
    
    	<!--listener>  
        		<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>  
      	</listener--> 
    
        <!--filter>
            <filter-name>springSecurityFilterChain</filter-name>
            <filter-class>
                org.springframework.web.filter.DelegatingFilterProxy
            </filter-class>
        </filter-->
    
        <!--filter-mapping>
            <filter-name>springSecurityFilterChain</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping-->
    
    </web-app>

    doraemon-servlet.xml
    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:util="http://www.springframework.org/schema/util"
        xmlns:security="http://www.springframework.org/schema/security"
        xsi:schemaLocation="http://www.springframework.org/schema/beans 
                               http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
                               http://www.springframework.org/schema/util 
                               http://www.springframework.org/schema/util/spring-util-3.0.xsd
                               http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.0.xsd">
    
        <security:http auto-config="true">
            <security:intercept-url pattern="/styles/**" filters="none"/>
            <security:intercept-url pattern="/admin/**" access="ROLE_SUPERADMIN, ROLE_STANDARD" requires-channel="https"/>
            <security:intercept-url pattern="/login*" access="IS_AUTHENTICATED_ANONYMOUSLY" requires-channel="https"/>
            <security:intercept-url pattern="/**" requires-channel="any" access="IS_AUTHENTICATED_ANONYMOUSLY"/>
            
            <security:form-login login-page="/login.dhtml" authentication-failure-url="/login_fail.dhtml?error=1"/>
            <security:logout logout-url="/j_spring_security_logout" logout-success-url="/login.dhtml"/>
            
            <security:port-mappings>
                <security:port-mapping http="8090" https="8443"/>
                <security:port-mapping http="8080" https="8443"/>
            </security:port-mappings>
        </security:http>
        
         <bean id="channelProcessingFilter" class="org.springframework.security.web.access.channel.ChannelProcessingFilter">
            <property name="channelDecisionManager">
                <bean class="org.springframework.security.web.access.channel.ChannelDecisionManagerImpl">
                    <property name="channelProcessors">
                        <util:list>
                            <bean class="org.springframework.security.web.access.channel.SecureChannelProcessor"/>
                            <bean class="org.springframework.security.web.access.channel.InsecureChannelProcessor"/>
                        </util:list>
                    </property>
                </bean>
            </property>
            <property name="securityMetadataSource">
                <bean class=" org.springframework.security.web.access.intercept.DefaultFilterInvocationSecurityMetadataSource">
                    <constructor-arg>
                        <bean class="org.springframework.security.web.util.AntUrlPathMatcher"/>
                    </constructor-arg>
                    <constructor-arg>
                        <util:map map-class="java.util.LinkedHashMap">
                            <entry>
                                <key>
                                    <bean class="org.springframework.security.web.access.intercept.RequestKey">
                                        <constructor-arg value="/admin/**/**"/>
                                    </bean>
                                </key>
                                <util:list>
                            <bean class="org.springframework.security.access.SecurityConfig">
                                <constructor-arg value="REQUIRES_SECURE_CHANNEL"/>
                            </bean>
                        </util:list>
                            </entry>
                            <entry>
                                <key>
                                    <bean class="org.springframework.security.web.access.intercept.RequestKey">
                                        <constructor-arg value="/**"/>
                                    </bean>
                                </key>
                                <util:list>
                            <bean class="org.springframework.security.access.SecurityConfig">
                                <constructor-arg value="REQUIRES_INSECURE_CHANNEL"/>
                            </bean>
                        </util:list>
                            </entry>
                        </util:map>
                    </constructor-arg>
                </bean>
        </property>
    </bean>
    </beans>

  • #2
    I suggest you to update the following line in "server.xml" file under "Servers->Tomcat v6.0 Server at localhost-config" (inside the "Package Explorer"). That, however, depends on if your tomcat server is using the configuration there. If your Tomcat server looks for the server.xml elsewhere, change it elsewhere then.

    e.g.
    <Context docBase="SpringEncrypted" path="/SpringEncrypted" reloadable="true" source="org.eclipse.jst.jee.server:SpringEncrypted "/></Host>

    Hope this helps.

    Comment


    • #3
      Will you try http://localhost:8080/SpringEncrypte...mon/hello.html

      or

      https://localhost:8443/SpringEncrypt...mon/hello.html

      Comment

      Working...
      X