SQLServer上でWITH句を含んだSQLを作成したところ、以下のエラーが発生する。
キーワード 'with' 付近に不適切な構文があります。このステートメントが共通テーブル式、xmlnamespaces 句、または変更追跡コンテキストの句の場合は、前のステートメントをセミコロンで終了してください。
解決方法
このエラーについては、書いてあることを信用してよくて、
以下のようなコマンドを実行した場合に、「データベースコンテキストが ~ に変更されました。」というログが出力される。
USE TEST GO
SQLの結果を出力したいのだが、このデータベースコンテキストの出力を毎回するのは不要なので、ここだけ出力しないようにしたい。
どうすればよいか。
対応として、部分的にエラーレベルを変更することで出力しないようにすることができる。
具体的には以下のようなコード。
:setvar SQLCMDERRORLEVEL 1 USE TEST GO :setvar SQLCMDERRORLEVEL 0 以下主処理
参考URL:https://stackoverflow.com/questions/10412673/how-to-stop-the-changed-database-context-to-message
intra-mart(Accel Platform)でResinを再起動した直後、特定の画面アクセスすると初回のみ非常に遅い。
時間がかかった後にjspのコンパイルに関するワーニングログが出力されるので、どうも、アクセスするjspのコンパイルに時間がかかっている模様。
このコンパイルに時間がかかる原因については様々あるので、一旦置いておくとして、
起動後にまず初回アクセスしなければならないのを回避できないか。
これにはJSPのプリコンパイル設定というのがあり、resin-web.xmlに以下のような設定を追記すると可能になる。
<listener> <listener-class>com.caucho.jsp.JspPrecompileListener</listener-class> <init> <extension>jsp</extension> <extension>jspf</extension> </init> </listener>
スケジュール画面にアクセスすると以下のような例外が発生する。
jp.co.intra_mart.common.aid.jsdk.javax.servlet.exception.ExtendedServletException: Runtime error: collaboration/schedule/user/calendar at jp.co.intra_mart.system.session.web.WebPageBuilder.invoke(WebPageBuilder.java:145) at jp.co.intra_mart.system.servlet.jssp.AbstractJSSPServlet.fire(AbstractJSSPServlet.java:76) at jp.co.intra_mart.system.servlet.jssp.SecureJSSPServlet.execute(SecureJSSPServlet.java:70) at jp.co.intra_mart.system.servlet.jssp.SecureJSSPServlet.doPost(SecureJSSPServlet.java:55) at javax.servlet.http.HttpServlet.service(HttpServlet.java:159) at javax.servlet.http.HttpServlet.service(HttpServlet.java:97) at com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:109) at jp.co.intra_mart.foundation.ui.theme.ThemeFilter.doFilter(ThemeFilter.java:397) at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) at jp.co.intra_mart.system.servlet.jssp.JSSPContextFilter.doFilter(JSSPContextFilter.java:63) at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) at jp.co.intra_mart.common.aid.jsdk.javax.servlet.filter.impl.HTTPContextHandlingFilterImpl.doFilter(HTTPContextHandlingFilterImpl.java:53) at jp.co.intra_mart.common.aid.jsdk.javax.servlet.filter.HTTPContextHandlingFilter.doFilter(HTTPContextHandlingFilter.java:94) at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) at jp.co.intra_mart.common.aid.jsdk.javax.servlet.filter.RequestMessageBodyFilter.doFilter(RequestMessageBodyFilter.java:210) at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) at jp.co.intra_mart.system.security.certification.filter.CertificationConfirmFilter.doFilter(CertificationConfirmFilter.java:54) at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) at jp.co.intra_mart.system.secure_token.filter.SecureTokenFilter.doFilter(SecureTokenFilter.java:67) at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) at jp.co.intra_mart.system.servlet.filter.RequestControlFilter$FilterScope.execute(RequestControlFilter.java:36) at jp.co.intra_mart.system.servlet.filter.ParallelRequestController.execute(ParallelRequestController.java:122) at jp.co.intra_mart.system.servlet.filter.RequestControlFilter.doFilter(RequestControlFilter.java:50) at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) at jp.co.intra_mart.system.servlet.filter.RequestQueryLengthMonitoringFilter$FilterScope.execute(RequestQueryLengthMonitoringFilter.java:39) at jp.co.intra_mart.system.servlet.filter.RequestQueryLengthMonitoringController.execute(RequestQueryLengthMonitoringController.java:113) at jp.co.intra_mart.system.servlet.filter.RequestQueryLengthMonitoringFilter.doFilter(RequestQueryLengthMonitoringFilter.java:53) at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) at jp.co.intra_mart.system.servlet.filter.RequestScopeLockReleaseFilter.doFilter(RequestScopeLockReleaseFilter.java:44) at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) at jp.co.intra_mart.system.secure.filter.ApplicationPermissionFilter.doFilter(ApplicationPermissionFilter.java:65) at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) at jp.co.intra_mart.system.secure.filter.SystemPermissionFilter.doFilter(SystemPermissionFilter.java:68) at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) at org.seasar.framework.container.filter.S2ContainerFilter.doFilter(S2ContainerFilter.java:79) at org.seasar.struts.portlet.filter.S2ContainerFilter.doFilter(S2ContainerFilter.java:45) at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) at org.seasar.framework.container.hotdeploy.HotdeployFilter.doFilter(HotdeployFilter.java:71) at org.seasar.struts.portlet.filter.HotdeployFilter.doFilter(HotdeployFilter.java:45) at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) at com.caucho.server.webapp.DispatchFilterChain.doFilter(DispatchFilterChain.java:131) at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:314) at com.caucho.server.webapp.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:298) at com.caucho.server.webapp.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:116) at jp.co.intra_mart.system.log.transition.TransitionLogRequestDispatcher.forward(TransitionLogRequestDispatcher.java:65) at jp.co.intra_mart.system.router.jssp.JSSPDispatcher.forward(JSSPDispatcher.java:60) at jp.co.intra_mart.system.router.authz.user.jssp.AuthzJSSPAction.executeAuthorized(AuthzJSSPAction.java:34) at jp.co.intra_mart.system.router.authz.AuthorizingAction.doExecute(AuthorizingAction.java:52) at jp.co.intra_mart.foundation.router.GenericAction.execute(GenericAction.java:73) at jp.co.intra_mart.foundation.router.GenericAction.access$000(GenericAction.java:17) at jp.co.intra_mart.foundation.router.GenericAction$GenericActionFilterChain.doFilter(GenericAction.java:32) at jp.co.intra_mart.foundation.servlet.router.filter.CorsActionFilter$CorsActionFilterScope.execute(CorsActionFilter.java:46) at jp.co.intra_mart.system.cors.servlet.filter.StandardCorsController.execute(StandardCorsController.java:111) at jp.co.intra_mart.foundation.servlet.router.filter.CorsActionFilter.doFilter(CorsActionFilter.java:59) at jp.co.intra_mart.foundation.router.GenericAction.execute(GenericAction.java:66) at jp.co.intra_mart.foundation.router.GenericAction.execute(GenericAction.java:71) at jp.co.intra_mart.foundation.router.GenericAction.execute(GenericAction.java:62) at jp.co.intra_mart.system.router.BasicRouter.route(BasicRouter.java:144) at jp.co.intra_mart.system.router.IntramartRouter.route(IntramartRouter.java:145) at jp.co.intra_mart.system.router.DebugRouter.route(DebugRouter.java:52) at jp.co.intra_mart.system.router.IntramartComplexRouter.route(IntramartComplexRouter.java:74) at jp.co.intra_mart.foundation.router.RoutingFilter.doFilter(RoutingFilter.java:38) at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) at jp.co.intra_mart.foundation.security.filter.SessionFilter.doFilter(SessionFilter.java:70) at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) at jp.co.intra_mart.system.log.transition.TransitionLogFilter.doFilter(TransitionLogFilter.java:73) at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) at jp.co.intra_mart.system.servlet.filter.RequestLogFilter.doFilter(RequestLogFilter.java:110) at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) at jp.co.intra_mart.system.servlet.filter.ResponseHeaderFilter.doFilter(ResponseHeaderFilter.java:154) at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) at jp.co.intra_mart.system.context.web.impl.ContextFilter.doContextFilter(ContextFilter.java:141) at jp.co.intra_mart.system.context.web.impl.PreContextFilterChain.doFilter(PreContextFilterChain.java:47) at jp.co.intra_mart.system.context.web.impl.ContextFilter.doFilter(ContextFilter.java:80) at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) at jp.co.intra_mart.foundation.security.filter.ResponseCharacterEncodingFilter.doFilter(ResponseCharacterEncodingFilter.java:90) at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) at jp.co.intra_mart.foundation.security.filter.RequestCharacterEncodingFilter.doFilter(RequestCharacterEncodingFilter.java:47) at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) at org.seasar.framework.container.filter.S2ContainerFilter.doFilter(S2ContainerFilter.java:79) at org.seasar.struts.portlet.filter.S2ContainerFilter.doFilter(S2ContainerFilter.java:45) at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) at org.seasar.framework.container.hotdeploy.HotdeployFilter.doFilter(HotdeployFilter.java:71) at org.seasar.struts.portlet.filter.HotdeployFilter.doFilter(HotdeployFilter.java:45) at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) at com.caucho.server.webapp.WebAppListenerFilterChain.doFilter(WebAppListenerFilterChain.java:114) at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:156) at com.caucho.server.webapp.AccessLogFilterChain.doFilter(AccessLogFilterChain.java:95) at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:314) at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:843) at com.caucho.network.listen.TcpSocketLink.dispatchRequest(TcpSocketLink.java:1395) at com.caucho.network.listen.TcpSocketLink.handleRequest(TcpSocketLink.java:1351) at com.caucho.network.listen.TcpSocketLink.handleRequestsImpl(TcpSocketLink.java:1335) at com.caucho.network.listen.TcpSocketLink.handleRequests(TcpSocketLink.java:1243) at com.caucho.network.listen.TcpSocketLink.handleAcceptTaskImpl(TcpSocketLink.java:1037) at com.caucho.network.listen.ConnectionTask.runThread(ConnectionTask.java:117) at com.caucho.network.listen.ConnectionTask.run(ConnectionTask.java:93) at com.caucho.network.listen.SocketLinkThreadLauncher.handleTasks(SocketLinkThreadLauncher.java:175) at com.caucho.network.listen.TcpSocketAcceptThread.run(TcpSocketAcceptThread.java:61) at com.caucho.env.thread2.ResinThread2.runTasks(ResinThread2.java:173) at com.caucho.env.thread2.ResinThread2.run(ResinThread2.java:118) Caused by: java.lang.NoClassDefFoundError: Could not initialize class jp.co.intra_mart.product.collaboration.core.internal.validation.ValidationActionExcute at jp.co.intra_mart.product.collaboration.core.internal.validation.ValidationUtility.validate(ValidationUtility.java:913) at jp.co.intra_mart.product.collaboration.schedule.internal.service.PersonalSettingServiceImpl.findDisplaySetting(PersonalSettingServiceImpl.java:184) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at jp.co.intra_mart.product.collaboration.core.service.Services$LoggingInvocationHandler.invoke(Services.java:59) at com.sun.proxy.$Proxy274.findDisplaySetting(Unknown Source) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at jp.co.intra_mart.product.collaboration.core.internal.javascript.ServiceResultInvoker.invoke(ServiceResultInvoker.java:38) at jp.co.intra_mart.system.javascript.ServiceWrapper$Function.callOrConstruct(ServiceWrapper.java:261) at jp.co.intra_mart.system.javascript.VarargsFunction.delegate(VarargsFunction.java:45) at sun.reflect.GeneratedMethodAccessor200.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at jp.co.intra_mart.system.javascript.MemberBox.invoke(MemberBox.java:126) at jp.co.intra_mart.system.javascript.FunctionObject.call(FunctionObject.java:385) at jp.co.intra_mart.system.javascript.VarargsFunction.call(VarargsFunction.java:50) at jp.co.intra_mart.system.javascript.Interpreter.interpretLoop(Interpreter.java:1473) at jp.co.intra_mart.system.javascript.Interpreter.interpret(Interpreter.java:815) at jp.co.intra_mart.system.javascript.InterpretedFunction.call(InterpretedFunction.java:109) at jp.co.intra_mart.system.javascript.ContextFactory.doTopCall(ContextFactory.java:394) at jp.co.intra_mart.system.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3101) at jp.co.intra_mart.system.javascript.InterpretedFunction.call(InterpretedFunction.java:107) at jp.co.intra_mart.system.display.ScriptScope.call(ScriptScope.java:156) at jp.co.intra_mart.system.session.web.WebPageBuilder.invoke(WebPageBuilder.java:252) at jp.co.intra_mart.system.session.web.WebPageBuilder.invoke(WebPageBuilder.java:126) ... 100 more
もしくは、以下のような例外。
jp.co.intra_mart.common.aid.jsdk.javax.servlet.exception.ExtendedServletException: Runtime error: collaboration/schedule/user/calendar at jp.co.intra_mart.system.session.web.WebPageBuilder.invoke(WebPageBuilder.java:145) at jp.co.intra_mart.system.servlet.jssp.AbstractJSSPServlet.fire(AbstractJSSPServlet.java:76) at jp.co.intra_mart.system.servlet.jssp.SecureJSSPServlet.execute(SecureJSSPServlet.java:70) at jp.co.intra_mart.system.servlet.jssp.SecureJSSPServlet.doPost(SecureJSSPServlet.java:55) at javax.servlet.http.HttpServlet.service(HttpServlet.java:159) at javax.servlet.http.HttpServlet.service(HttpServlet.java:97) at com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:109) at jp.co.intra_mart.foundation.ui.theme.ThemeFilter.doFilter(ThemeFilter.java:397) at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) at jp.co.intra_mart.system.servlet.jssp.JSSPContextFilter.doFilter(JSSPContextFilter.java:63) at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) at jp.co.intra_mart.common.aid.jsdk.javax.servlet.filter.impl.HTTPContextHandlingFilterImpl.doFilter(HTTPContextHandlingFilterImpl.java:53) at jp.co.intra_mart.common.aid.jsdk.javax.servlet.filter.HTTPContextHandlingFilter.doFilter(HTTPContextHandlingFilter.java:94) at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) at jp.co.intra_mart.common.aid.jsdk.javax.servlet.filter.RequestMessageBodyFilter.doFilter(RequestMessageBodyFilter.java:210) at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) at jp.co.intra_mart.system.security.certification.filter.CertificationConfirmFilter.doFilter(CertificationConfirmFilter.java:54) at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) at jp.co.intra_mart.system.secure_token.filter.SecureTokenFilter.doFilter(SecureTokenFilter.java:67) at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) at jp.co.intra_mart.system.servlet.filter.RequestControlFilter$FilterScope.execute(RequestControlFilter.java:36) at jp.co.intra_mart.system.servlet.filter.ParallelRequestController.execute(ParallelRequestController.java:122) at jp.co.intra_mart.system.servlet.filter.RequestControlFilter.doFilter(RequestControlFilter.java:50) at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) at jp.co.intra_mart.system.servlet.filter.RequestQueryLengthMonitoringFilter$FilterScope.execute(RequestQueryLengthMonitoringFilter.java:39) at jp.co.intra_mart.system.servlet.filter.RequestQueryLengthMonitoringController.execute(RequestQueryLengthMonitoringController.java:113) at jp.co.intra_mart.system.servlet.filter.RequestQueryLengthMonitoringFilter.doFilter(RequestQueryLengthMonitoringFilter.java:53) at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) at jp.co.intra_mart.system.servlet.filter.RequestScopeLockReleaseFilter.doFilter(RequestScopeLockReleaseFilter.java:44) at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) at jp.co.intra_mart.system.secure.filter.ApplicationPermissionFilter.doFilter(ApplicationPermissionFilter.java:65) at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) at jp.co.intra_mart.system.secure.filter.SystemPermissionFilter.doFilter(SystemPermissionFilter.java:68) at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) at org.seasar.framework.container.filter.S2ContainerFilter.doFilter(S2ContainerFilter.java:79) at org.seasar.struts.portlet.filter.S2ContainerFilter.doFilter(S2ContainerFilter.java:45) at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) at org.seasar.framework.container.hotdeploy.HotdeployFilter.doFilter(HotdeployFilter.java:71) at org.seasar.struts.portlet.filter.HotdeployFilter.doFilter(HotdeployFilter.java:45) at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) at com.caucho.server.webapp.DispatchFilterChain.doFilter(DispatchFilterChain.java:131) at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:314) at com.caucho.server.webapp.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:298) at com.caucho.server.webapp.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:116) at jp.co.intra_mart.system.log.transition.TransitionLogRequestDispatcher.forward(TransitionLogRequestDispatcher.java:65) at jp.co.intra_mart.system.router.jssp.JSSPDispatcher.forward(JSSPDispatcher.java:60) at jp.co.intra_mart.system.router.authz.user.jssp.AuthzJSSPAction.executeAuthorized(AuthzJSSPAction.java:34) at jp.co.intra_mart.system.router.authz.AuthorizingAction.doExecute(AuthorizingAction.java:52) at jp.co.intra_mart.foundation.router.GenericAction.execute(GenericAction.java:73) at jp.co.intra_mart.foundation.router.GenericAction.access$000(GenericAction.java:17) at jp.co.intra_mart.foundation.router.GenericAction$GenericActionFilterChain.doFilter(GenericAction.java:32) at jp.co.intra_mart.foundation.servlet.router.filter.CorsActionFilter$CorsActionFilterScope.execute(CorsActionFilter.java:46) at jp.co.intra_mart.system.cors.servlet.filter.StandardCorsController.execute(StandardCorsController.java:111) at jp.co.intra_mart.foundation.servlet.router.filter.CorsActionFilter.doFilter(CorsActionFilter.java:59) at jp.co.intra_mart.foundation.router.GenericAction.execute(GenericAction.java:66) at jp.co.intra_mart.foundation.router.GenericAction.execute(GenericAction.java:71) at jp.co.intra_mart.foundation.router.GenericAction.execute(GenericAction.java:62) at jp.co.intra_mart.system.router.BasicRouter.route(BasicRouter.java:144) at jp.co.intra_mart.system.router.IntramartRouter.route(IntramartRouter.java:145) at jp.co.intra_mart.system.router.DebugRouter.route(DebugRouter.java:52) at jp.co.intra_mart.system.router.IntramartComplexRouter.route(IntramartComplexRouter.java:74) at jp.co.intra_mart.foundation.router.RoutingFilter.doFilter(RoutingFilter.java:38) at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) at jp.co.intra_mart.foundation.security.filter.SessionFilter.doFilter(SessionFilter.java:70) at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) at jp.co.intra_mart.system.log.transition.TransitionLogFilter.doFilter(TransitionLogFilter.java:73) at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) at jp.co.intra_mart.system.servlet.filter.RequestLogFilter.doFilter(RequestLogFilter.java:110) at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) at jp.co.intra_mart.system.servlet.filter.ResponseHeaderFilter.doFilter(ResponseHeaderFilter.java:154) at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) at jp.co.intra_mart.system.context.web.impl.ContextFilter.doContextFilter(ContextFilter.java:141) at jp.co.intra_mart.system.context.web.impl.PreContextFilterChain.doFilter(PreContextFilterChain.java:47) at jp.co.intra_mart.system.context.web.impl.ContextFilter.doFilter(ContextFilter.java:80) at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) at jp.co.intra_mart.foundation.security.filter.ResponseCharacterEncodingFilter.doFilter(ResponseCharacterEncodingFilter.java:90) at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) at jp.co.intra_mart.foundation.security.filter.RequestCharacterEncodingFilter.doFilter(RequestCharacterEncodingFilter.java:47) at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) at org.seasar.framework.container.filter.S2ContainerFilter.doFilter(S2ContainerFilter.java:79) at org.seasar.struts.portlet.filter.S2ContainerFilter.doFilter(S2ContainerFilter.java:45) at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) at org.seasar.framework.container.hotdeploy.HotdeployFilter.doFilter(HotdeployFilter.java:71) at org.seasar.struts.portlet.filter.HotdeployFilter.doFilter(HotdeployFilter.java:45) at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89) at com.caucho.server.webapp.WebAppListenerFilterChain.doFilter(WebAppListenerFilterChain.java:114) at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:156) at com.caucho.server.webapp.AccessLogFilterChain.doFilter(AccessLogFilterChain.java:95) at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:314) at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:843) at com.caucho.network.listen.TcpSocketLink.dispatchRequest(TcpSocketLink.java:1395) at com.caucho.network.listen.TcpSocketLink.handleRequest(TcpSocketLink.java:1351) at com.caucho.network.listen.TcpSocketLink.handleRequestsImpl(TcpSocketLink.java:1335) at com.caucho.network.listen.TcpSocketLink.handleRequests(TcpSocketLink.java:1243) at com.caucho.network.listen.TcpSocketLink.handleAcceptTaskImpl(TcpSocketLink.java:1037) at com.caucho.network.listen.ConnectionTask.runThread(ConnectionTask.java:117) at com.caucho.network.listen.ConnectionTask.run(ConnectionTask.java:93) at com.caucho.network.listen.SocketLinkThreadLauncher.handleTasks(SocketLinkThreadLauncher.java:175) at com.caucho.network.listen.TcpSocketAcceptThread.run(TcpSocketAcceptThread.java:61) at com.caucho.env.thread2.ResinThread2.runTasks(ResinThread2.java:173) at com.caucho.env.thread2.ResinThread2.run(ResinThread2.java:118) Caused by: java.lang.NoClassDefFoundError: javax/validation/spi/ConfigurationState at jp.co.intra_mart.product.collaboration.core.internal.validation.ValidationActionExcute.<init>(ValidationActionExcute.java:41) at jp.co.intra_mart.product.collaboration.core.internal.validation.ValidationActionExcute.<clinit>(ValidationActionExcute.java:36) at jp.co.intra_mart.product.collaboration.core.internal.validation.ValidationUtility.validate(ValidationUtility.java:913) at jp.co.intra_mart.product.collaboration.schedule.internal.service.PersonalSettingServiceImpl.findDisplaySetting(PersonalSettingServiceImpl.java:184) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at jp.co.intra_mart.product.collaboration.core.service.Services$LoggingInvocationHandler.invoke(Services.java:59) at com.sun.proxy.$Proxy255.findDisplaySetting(Unknown Source) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at jp.co.intra_mart.product.collaboration.core.internal.javascript.ServiceResultInvoker.invoke(ServiceResultInvoker.java:38) at jp.co.intra_mart.system.javascript.ServiceWrapper$Function.callOrConstruct(ServiceWrapper.java:261) at jp.co.intra_mart.system.javascript.VarargsFunction.delegate(VarargsFunction.java:45) at sun.reflect.GeneratedMethodAccessor198.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at jp.co.intra_mart.system.javascript.MemberBox.invoke(MemberBox.java:126) at jp.co.intra_mart.system.javascript.FunctionObject.call(FunctionObject.java:385) at jp.co.intra_mart.system.javascript.VarargsFunction.call(VarargsFunction.java:50) at jp.co.intra_mart.system.javascript.Interpreter.interpretLoop(Interpreter.java:1473) at jp.co.intra_mart.system.javascript.Interpreter.interpret(Interpreter.java:815) at jp.co.intra_mart.system.javascript.InterpretedFunction.call(InterpretedFunction.java:109) at jp.co.intra_mart.system.javascript.ContextFactory.doTopCall(ContextFactory.java:394) at jp.co.intra_mart.system.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3101) at jp.co.intra_mart.system.javascript.InterpretedFunction.call(InterpretedFunction.java:107) at jp.co.intra_mart.system.display.ScriptScope.call(ScriptScope.java:156) at jp.co.intra_mart.system.session.web.WebPageBuilder.invoke(WebPageBuilder.java:252) at jp.co.intra_mart.system.session.web.WebPageBuilder.invoke(WebPageBuilder.java:126) ... 100 more Caused by: java.lang.ClassNotFoundException: javax.validation.spi.ConfigurationState (in EnvironmentClassLoader[web-app:production/webapp/default/imart]) at com.caucho.loader.DynamicClassLoader.loadClass(DynamicClassLoader.java:1560) at com.caucho.loader.DynamicClassLoader.loadClass(DynamicClassLoader.java:1530) ... 132 more
ClassNotFoundExceptionが出ていることから、クラスが足りていないことが原因。
なおかつ、 javax.validation.spi.ConfigurationStateと言われているので、validation系のクラスが足りないようだ。
対応としては、jugglingのモジュール選択にてサードパーティ製ライブラリの「Hibernate Validater」を追加すること。
このwarを再度デプロイしたところ、エラーが解消された。
今回のケースでは、既にある環境に途中からCollaborationを足したのだが、その場合にこのライブラリが漏れてしまうことがある模様?である。
intra-mart開発は、一般的にJava開発の知識があればさほど難しいものではありません。
ただ、intra-mart開発に必要なノウハウとしては以下のようなものが挙げられます。
今回は、APIのうち「これは現場で使う。」というものをピックアップしたいと思います。
これからintra-mart開発を始めます、という方も、ファーストステップとして「こんなAPIがあるのか」というのを一通り見て、頭の片隅に置いておくことは大切かと思います。
APIでできるのに、自前で実装しては効率が落ちてしまいますからね。
というわけで入門向けでもあり、経験者は復習を兼ねて。
intra-mart Accel Platform Client Side JavaScript API - Index
Ajaxリクエストを送信することができます。CSJS上でサーバ処理呼びたい時に。
コールバック関数を指定することも可能です。imuiTransitionToErrorPageを使うとエラー時の画面遷移もできます。
入力チェックを実装できます。入力要素の下にエラーメッセージを表示してくれます。必須、型、範囲などの基本的なチェックであればこれで実行できます。
はい、いいえを確認するダイアログを表示します。標準のConfirmでも良いのですが、intra-mart風のUIに統一できます。
画面の上部にふわーっと浮き出るメッセージを表示します。
Success:成功(緑)、Warning:警告(黄色)、Error:エラー(赤)の3種あり。
intra-mart風の見た目に統一する場合、タイトルバー関連はよく使います。
https://www.intra-mart.jp/apidoc/iap/imui-css-doc/html/heading.html
こちらもintra-mart風のテーブルレイアウトにする場合は利用します。
https://www.intra-mart.jp/apidoc/iap/imui-css-doc/html/table.html
フォームの入力項目をintra-mart風のUIに統一する場合。必須チェックなども付けられます。
https://www.intra-mart.jp/apidoc/iap/imui-css-doc/html/form.html
intra-mart風のボタンUIにする場合。
https://www.intra-mart.jp/apidoc/iap/imui-css-doc/html/button.html
スクリプト開発 intra-mart Accel Platform Tag Documentation
JavaEE開発 https://www.intra-mart.jp/apidoc/iap/apilist-jsp-tagdoc/doc/index.html
リクエスト用の隠し項目。
通常のhiddenタグを使っても良いのですが、1タグで複数個の同時指定ができることが特徴です。
スクリプト開発モデルのみ。JavaEEはフレームワークに合わせたものを使いましょう。
ストレージ上にある画像を表示する時に使います。画像をWebサーバに配置したくない場合に。
スクリプト開発 https://www.intra-mart.jp/apidoc/iap/apilist-jssp-tagdoc/doc/imart_tag_api/picture/index.html
JavaEE https://www.intra-mart.jp/apidoc/iap/apilist-jsp-tagdoc/doc/pc/imuiPicture/index.html
指定した変数を文字列として出力します。データをラベルとして表示する場合などに。
スクリプト開発モデルのみ。JavaEEはフレームワークに合わせたものを使いましょう。
条件を満たす場合にタグ内の処理が実行されます。true or falseの指定。
スクリプト開発 https://www.intra-mart.jp/apidoc/iap/apilist-jssp-tagdoc/doc/imart_tag_api/condition/index.html
JavaEE https://www.intra-mart.jp/apidoc/iap/apilist-jsp-tagdoc/doc/standard/condition/index.html
条件を満たす場合にタグ内の処理が実行されます。任意の値と等しいかどうかの判定。
スクリプト開発 https://www.intra-mart.jp/apidoc/iap/apilist-jssp-tagdoc/doc/imart_tag_api/decision/index.html
JavaEE https://www.intra-mart.jp/apidoc/iap/apilist-jsp-tagdoc/doc/standard/decision/index.html
タグ内の処理を繰り返します。SELECTした結果を一覧出力する場合などに利用。
スクリプト開発 https://www.intra-mart.jp/apidoc/iap/apilist-jssp-tagdoc/doc/imart_tag_api/repeat/index.html
JavaEE https://www.intra-mart.jp/apidoc/iap/apilist-jsp-tagdoc/doc/standard/repeat/index.html
ユーザや組織など、IM共通マスタ系の検索画面を表示できます。
これはポップアップ版で、他に画面内ダイアログ版(imACMSearchDialog)があります。
スクリプト開発 https://www.intra-mart.jp/apidoc/iap/apilist-jssp-tagdoc/doc/imart_tag_im_master_api/imACMSearch/index.html
JavaEE https://www.intra-mart.jp/apidoc/iap/apilist-jsp-tagdoc/doc/im_master/imACMSearch/index.html
IM標準の見た目をしたボタンです。
スクリプト開発 https://www.intra-mart.jp/apidoc/iap/apilist-jssp-tagdoc/doc/pc/imuiButton/index.html
JavaEE https://www.intra-mart.jp/apidoc/iap/apilist-jsp-tagdoc/doc/pc/imuiButton/index.html
日付入力アイテムに、カレンダーから入力させるためのアイテムです。
スクリプト開発 https://www.intra-mart.jp/apidoc/iap/apilist-jssp-tagdoc/doc/pc/imuiCalendar/index.html
JavaEE https://www.intra-mart.jp/apidoc/iap/apilist-jsp-tagdoc/doc/pc/imuiCalendar/index.html
画面内のモーダルダイアログを生成できます。確認メッセージや、何かの情報の詳細表示など。
スクリプト開発 https://www.intra-mart.jp/apidoc/iap/apilist-jssp-tagdoc/doc/pc/imuiDialog/index.html
JavaEE https://www.intra-mart.jp/apidoc/iap/apilist-jsp-tagdoc/doc/pc/imuiDialog/index.html
IM標準のテーブルです。ソート機能やページング機能などが標準でついています。
スクリプト開発 https://www.intra-mart.jp/apidoc/iap/apilist-jssp-tagdoc/doc/pc/imuiListTable/index.html
JavaEE https://www.intra-mart.jp/apidoc/iap/apilist-jsp-tagdoc/doc/pc/imuiListTable/index.html
値がNullかどうかを判定できます。スクリプト開発のみ。
スクリプト開発 https://www.intra-mart.jp/apidoc/iap/apilist-ssjs/doc/platform/GlobalFunction/index.html#method-isNull_13
値がundefinedかどうかを判定できます。スクリプト開発のみ。
スクリプト開発 https://www.intra-mart.jp/apidoc/iap/apilist-ssjs/doc/platform/GlobalFunction/index.html#method-isUndefined_18
セッションに値を格納したい時に使います。スクリプト開発用。JavaEEでは標準のセッションオブジェクトを使いましょう。
スクリプト開発 https://www.intra-mart.jp/apidoc/iap/apilist-ssjs/doc/platform/Client/index.html
実行ユーザのIDを取得したい、ロールを取得したいなど、主にアカウントコンテキストを取得するために使います。
スクリプト開発 https://www.intra-mart.jp/apidoc/iap/apilist-ssjs/doc/platform/Contexts/index.html
JavaEE https://www.intra-mart.jp/apidoc/iap/javadoc/all-dev_apidocs/jp/co/intra_mart/foundation/context/Contexts.html
JavaEEでアカウントコンテキストを取得する例
AccountContext accountContext = Contexts.get(AccountContext.class);
スクリプト開発のみ。開発時に非常にお世話になるであろうAPIです。Debug.browseを使うと引数に入れた変数の中身を画面表示します。
バッチ処理など画面がない場合は、Debug.consoleを使いましょう。
https://www.intra-mart.jp/apidoc/iap/apilist-ssjs/doc/platform/Debug/index.html
ユニークなIDを生成したい場合に使います。
スクリプト開発 https://www.intra-mart.jp/apidoc/iap/apilist-ssjs/doc/platform/Identifier/index.html
JavaEE https://www.intra-mart.jp/apidoc/iap/javadoc/all-dev_apidocs/jp/co/intra_mart/foundation/service/client/information/Identifier.html
標準ログに出力したいときに使います。warn,errorなどのログレベルを設定できます。
スクリプト開発 https://www.intra-mart.jp/apidoc/iap/apilist-ssjs/doc/platform/Logger/index.html
JavaEE https://www.intra-mart.jp/apidoc/iap/javadoc/all-dev_apidocs/jp/co/intra_mart/common/platform/log/Logger.html
テナントデータベースに接続するときに使います。データベース操作は基本コレ。
シェアードデータベースはテナントをまたがって共通で使えるもので、使うかは用途によります。
スクリプト開発 https://www.intra-mart.jp/apidoc/iap/apilist-ssjs/doc/platform/TenantDatabase/index.html
JavaEE https://www.intra-mart.jp/apidoc/iap/javadoc/all-dev_apidocs/jp/co/intra_mart/foundation/database/TenantDatabase.html
ストレージのファイルに読み書きをするときに使います。
スクリプト開発 https://www.intra-mart.jp/apidoc/iap/apilist-ssjs/doc/platform/PublicStorage/index.html
JavaEE https://www.intra-mart.jp/apidoc/iap/javadoc/all-dev_apidocs/jp/co/intra_mart/foundation/service/client/file/PublicStorage.html
セッションスコープの一時的なストレージで、セッションと共に消えます。ファイル操作中の一時的な格納などに。
スクリプト開発 https://www.intra-mart.jp/apidoc/iap/apilist-ssjs/doc/platform/SessionScopeStorage/index.html
JavaEE https://www.intra-mart.jp/apidoc/iap/javadoc/all-dev_apidocs/jp/co/intra_mart/foundation/service/client/file/SessionScopeStorage.html
ファイルダウンロードを行うためのAPIです。この処理を走らせると、そこで処理が終了します。
https://www.intra-mart.jp/apidoc/iap/apilist-ssjs/doc/platform/Module.download/index.html
JavaEEの場合は、IMResponseUtilが利用できます。
アカウント情報を操作するAPI。ロールやパスワードの取得・設定、アカウントの登録・削除など。
スクリプト開発 https://www.intra-mart.jp/apidoc/iap/apilist-ssjs/doc/tenant/AccountInfoManager/index.html
JavaEE https://www.intra-mart.jp/apidoc/iap/javadoc/all-dev_apidocs/jp/co/intra_mart/foundation/admin/account/AccountInfoManager.html
IM-共通マスタのユーザ(ユーザ名など)を操作するためのAPI。この他に組織、パブリックグループなどがあります。
スクリプト開発 https://www.intra-mart.jp/apidoc/iap/apilist-ssjs/doc/im_master/IMMUserManager/index.html
JavaEE https://www.intra-mart.jp/apidoc/iap/javadoc/all-dev_apidocs/jp/co/intra_mart/foundation/master/user/UserManager.html
以上、intra-mart開発において有用なAPIのまとめでした。
数ある中の一部のみを抜粋していますので、「こんな処理したいな」というのがあったらまずはAPI見たり、検索してみることをお勧めします。
よりよいintra-mart開発ライフが送れますように。
以前の記事で、独自ドメインにてGoogle Adsenseに合格したことを書きました。
まもなくして、アドセンスの画面に以下のようなads.txtの警告が表示されました。
要注意 – 収益に重大な影響が出ないよう、ads.txt ファイルの問題を修正してください。
調べてみると、はてなブログのルートドメインにもads.txtは配置されていないため特に対応しなくとも問題はない…とのQAがあり。
その他には、Webサーバを追加で設置してads.txtを対応するような解もあり。
対応必須かわからないけど警告は消したいし、かといってads.txtのためだけに追加で1サーバ立てる気はない。
そこで今回、AWSを用いてads.txtを設置し、ads.txtを認識させることに成功したので共有します。
今回構成したのは、以下のような構成です。
www付きは直接はてなブログへ。
wwwなし(apexドメイン)はCloudFront、およびS3を経由してはてなブログへ。
CloudFront経由にする構成の設定については、以下の記事を参照ください。
このS3内にads.txtを配置し、リダイレクトルールにて
という設定としています。
実際のリダイレクト設定ルールについて、下記に載せておきます。
<RoutingRules> <RoutingRule> <Condition> <KeyPrefixEquals>ads.txt</KeyPrefixEquals> </Condition> <Redirect> <HostName>s3.amazonaws.com</HostName> <ReplaceKeyWith>tachi-machi.net/ads.txt</ReplaceKeyWith> </Redirect> </RoutingRule> <RoutingRule> <Redirect> <HostName>www.tachi-machi.net</HostName> <ReplaceKeyWith/> </Redirect> </RoutingRule> </RoutingRules>
S3を静的Webサイトとして使うことで、追加サーバ構築の手間を省いています。
よほどアクセスの多いサイトでなければCloudFrontの料金はかかりませんし、S3についてもサイズが小さいので金額は微小です。
参考になれば幸いです。
2ヵ月ほど前に当ブログを独自ドメインに変更しました。
それまで、はてなブログのドメインでadsenseの審査は合格していたので、新しいドメインで再度申請することに。
しかし、合格しない…
審査側から送られてくるメッセージは以下。
サイトの停止または利用不可
お客様のサイトが停止しているか、利用できないことが判明いたしました。...
もちろん、URLを打ったらブログは出てきます。
ブログの詳細設定にて、headタグ要素にadsense審査用のコードも張り付けてある。はて…
私のケースの場合は、ブログのテーマが問題でした。
現在使っているテーマは、カスタムテーマの「DUDE」。
独自ドメインにする前は同じくカスタムテーマの「Brooklyn」を使っており、 そちらに戻して申請をしたところ、合格しました。
参考になれば幸いです。