これは本当にイライラします。次の週末に展開する予定で、突然アプリケーションが動作しなくなったので、これについて助けていただければ幸いです。JDK 1.7 を使用する Apache Tomcat 7 でホストされている Spring 4.3.3 アプリケーションがあります。アプリケーションは正常に動作していましたが、すべての JS、CSS、および画像ファイルの読み込みが突然停止し、HTTP ステータス コード 405 (Get Method は許可されていません) が表示されました。私が行った唯一の顕著な変更は、ラップトップにインストールされている Java を更新したことです。そのバージョンのJavaもアンインストールしましたが、メリットはありません。
chromeのネットワークタブは以下の結果を示しています。
Chrome ブラウザに表示されるエラーは次のとおりです。
General:
Request URL:http://localhost:8080/TractivityPhase3/resources/ui/jquery-ui.css
Request Method:GET
Status Code:405 Method Not Allowed
Remote Address:[::1]:8080
Referrer Policy:no-referrer-when-downgrade
Response Headers:
view source
Allow:POST
Content-Length:96
Content-Type:text/html;charset=ISO-8859-1
Date:Mon, 10 Jul 2017 12:12:49 GMT
Server:Apache-Coyote/1.1
Request Headers:
view source
Accept:text/css,*/*;q=0.1
Accept-Encoding:gzip, deflate, br
Accept-Language:en-US,en;q=0.8
Connection:keep-alive
Cookie:JSESSIONID=8F5257A38E3AC1FBBD4BCF0A869A5A05
Host:localhost:8080
Referer:http://localhost:8080/TractivityPhase3/login
User-Agent:Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36
私の web.xml コードを以下に示します。
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<display-name>Spring MVC Application</display-name>
<welcome-file-list>
<welcome-file>createIdeaPublic</welcome-file>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<display-name>Tractivity</display-name>
<session-config>
<session-timeout>120</session-timeout>
</session-config>
<servlet>
<servlet-name>Tractivity</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Tractivity</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<listener>
<listener-class>com.soft.utils.SessionListener</listener-class>
</listener>
<error-page>
<location>/jsp/components/jspError.jsp</location>
</error-page>
</web-app>
ディスパッチャーとサーブレットの構成を以下に示します。
<?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:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd ">
<context:component-scan base-package="com.soft.controllers, com.soft.ajax,com.soft.services, com.soft.daos" />
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/jsp/templates/" />
<property name="suffix" value=".jsp" />
</bean>
<mvc:resources mapping="/resources/ui/**" location="/resources/ui/jquery-ui-1.12.1.custom/" />
<!-- <mvc:resources mapping="/resources/ui/**" location="/resources/ui/jquery-ui-1.12.1.custom/" /> -->
<mvc:resources mapping="/resources/**" location="/resources/" />
<mvc:annotation-driven/>
<!--
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean> -->
<aop:aspectj-autoproxy proxy-target-class="true"/>
<bean id="dataSource" class="com.soft.utils.SecureDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<constructor-arg ref="dataSource"></constructor-arg>
</bean>
<context:property-placeholder location="jdbc.properties, security.properties"/>
<!-- <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
setting maximum upload size
<property name="maxUploadSize" value="100000" />
</bean> -->
<bean id="emailer" class="com.soft.utils.Emailer">
<property name="host" value="localhost"/>
<property name="from" value="CIActivityTracker@abc.com"/>
<property name="username" value="368649312300d9094a62" />
<property name="password" value="cbe8181247b9785036ee" />
</bean>
<bean id="ldapContextSource" class="com.soft.utils.LdapContextSource">
<property name="url" value="${ldap.url}"/>
<property name="base" value="${ldap.base}"/>
<property name="userDn" value="${ldap.userDn}"/>
<property name="pass" value="${ldap.password}"/>
<property name="referral" value="follow"/>
<property name="ldapAuthentication" value="${ldap.authentication}"/>
</bean>
<!-- Aspect -->
<bean id="logAspect" class="com.soft.aspect.LoggingAspect" />
<bean id="simpleJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="quartzExample" />
<property name="targetMethod" value="printMessage" />
</bean>
<bean id="quartzExample" class="com.soft.quartz.QuartzExample">
<property name="dbcViewName" value="${dbc.view}"/>
</bean>
<bean id="dailyTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="simpleJobDetail" />
<property name="cronExpression" value="0 0/2 * * * ? *" />
</bean>
<bean id="weeklyTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="simpleJobDetail" />
<property name="cronExpression" value="0/6 * * ? * L *" />
</bean>
<bean id="monthlyTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="simpleJobDetail" />
<property name="cronExpression" value="0/6 * * L * ? *" />
</bean>
<bean id="quarterlyTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="simpleJobDetail" />
<property name="cronExpression" value="0/1 * * L MAR,JUN,SEP,DEC ? *" />
</bean>
<bean id="annualTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="simpleJobDetail" />
<property name="cronExpression" value="0/1 * * 31 12 ? *" />
</bean>
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<!-- <ref bean="dailyTrigger" /> -->
<ref bean="dailyTrigger" />
</list>
</property>
</bean>
</beans>
編集: web.xml に以下を追加して、問題を一時的に修正しました。ただし、Dispatcher Servlet のタグを介してクリーンな方法で処理したいと考えています。
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.js</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.css</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.PNG</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.png</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.gif</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.ico</url-pattern>
</servlet-mapping>