{"id":232,"date":"2018-03-24T17:37:41","date_gmt":"2018-03-24T08:37:41","guid":{"rendered":"http:\/\/ito-u-oti.com\/?p=232"},"modified":"2018-05-05T21:22:21","modified_gmt":"2018-05-05T12:22:21","slug":"post-232","status":"publish","type":"post","link":"https:\/\/ito-u-oti.com\/?p=232","title":{"rendered":"Spring batch\u306eJunit\u30c6\u30b9\u30c8\u3092\u518d\u5b9f\u884c\u3057\u3088\u3046\u3068\u3057\u305f\u3089\u4e8c\u56de\u76ee\u4ee5\u964d\u3067\u30a8\u30e9\u30fc"},"content":{"rendered":"<h2 id=\"outline__1\">Spring batch\u306eJunit\u30c6\u30b9\u30c8\u3092\u518d\u5b9f\u884c\u3057\u3088\u3046\u3068\u3057\u305f\u3089\u4e8c\u56de\u76ee\u4ee5\u964d\u3067\u30a8\u30e9\u30fc<\/h2>\n<h3 id=\"outline__1_1\">\u4e8b\u8c61<\/h3>\n<p>Spring batch\u3067Junit\u30c6\u30b9\u30c8\u3092\u5b9f\u884c\u3057\u3088\u3046\u3068\u3057\u305f\u3089\u3001\u4e00\u56de\u76ee\u306f\u554f\u984c\u306a\u304f\u30c6\u30b9\u30c8\u304c\u5b8c\u4e86\u3057\u305f\u306e\u306b\u4e8c\u56de\u76ee\u4ee5\u964d\u306e\u5b9f\u884c\u3067\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3002<\/p>\n<h3 id=\"outline__1_2\">\u30a8\u30e9\u30fc\u5185\u5bb9<\/h3>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\norg.springframework.batch.core.repository.JobInstanceAlreadyCompleteException: A job instance already exists and is complete for parameters={fruit=apple, fruit2=orange}.  If you want to run this job again, change the parameters.\r\n\tat org.springframework.batch.core.repository.support.SimpleJobRepository.createJobExecution(SimpleJobRepository.java:130)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)\r\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)\r\n\tat java.lang.reflect.Method.invoke(Unknown Source)\r\n\tat org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:333)\r\n\tat org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)\r\n\tat org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)\r\n\tat org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)\r\n\tat org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:282)\r\n\tat org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)\r\n\tat org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n\tat org.springframework.batch.core.repository.support.AbstractJobRepositoryFactoryBean$1.invoke(AbstractJobRepositoryFactoryBean.java:181)\r\n\tat org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)\r\n\tat org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213)\r\n\tat com.sun.proxy.$Proxy18.createJobExecution(Unknown Source)\r\n\tat org.springframework.batch.core.launch.support.SimpleJobLauncher.run(SimpleJobLauncher.java:131)\r\n\tat org.springframework.batch.test.JobLauncherTestUtils.launchJob(JobLauncherTestUtils.java:152)\r\n\tat batch.sample01.Sample01JobTaskletTest.test(Sample01JobTaskletTest.java:54)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)\r\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)\r\n\tat java.lang.reflect.Method.invoke(Unknown Source)\r\n\tat org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)\r\n\tat org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)\r\n\tat org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)\r\n\tat org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)\r\n\tat org.springframework.test.context.junit4.statements.RunBeforeTestExecutionCallbacks.evaluate(RunBeforeTestExecutionCallbacks.java:73)\r\n\tat org.springframework.test.context.junit4.statements.RunAfterTestExecutionCallbacks.evaluate(RunAfterTestExecutionCallbacks.java:83)\r\n\tat org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)\r\n\tat org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75)\r\n\tat org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86)\r\n\tat org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84)\r\n\tat org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)\r\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:251)\r\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97)\r\n\tat org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)\r\n\tat org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)\r\n\tat org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)\r\n\tat org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)\r\n\tat org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)\r\n\tat org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)\r\n\tat org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)\r\n\tat org.junit.runners.ParentRunner.run(ParentRunner.java:363)\r\n\tat org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)\r\n\tat org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)\r\n\tat org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)\r\n\tat org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:539)\r\n\tat org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:761)\r\n\tat org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:461)\r\n\tat org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:207)\r\n<\/pre>\n<h3 id=\"outline__1_3\">\u539f\u56e0<\/h3>\n<p>\u30b8\u30e7\u30d6\u306e\u540c\u4e00\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u304c\u65e2\u306b\u5b58\u5728\u3057\u3066\u3044\u308b\u305f\u3081\u3002<br \/>\n\u5177\u4f53\u7684\u306b\u306f\u540c\u3058\u30d1\u30e9\u30e1\u30fc\u30bf\u306e\u5185\u5bb9\u3092\u6e21\u3059\u3068\u30a8\u30e9\u30fc\u306b\u306a\u308b\u3002<br \/>\n\u4e0a\u8a18\u306e\u4f8b\u3060\u3068<br \/>\nparameters={fruit=apple, fruit2=orange}<br \/>\n\u3068\u3044\u3046\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u6e21\u3057\u3066\u3044\u305f\u3002<\/p>\n<h3 id=\"outline__1_4\">\u89e3\u6c7a\u7b56<\/h3>\n<p>\u4e00\u610f\u306b\u5b9a\u307e\u308b\u3088\u3046\u306a\u30d1\u30e9\u30e1\u30fc\u30bf\u8a2d\u5b9a\u3092\u884c\u3046\u307e\u305f\u306f\u30a4\u30c6\u30ec\u30fc\u30bf\u306e\u5b9f\u88c5\u3002<br \/>\n\u307e\u3041\u3001\u8d77\u52d5\u3059\u308b\u6642\u306e\u73fe\u5728\u6642\u523b\u3068\u304b\u3067\u30e6\u30cb\u30fc\u30af\u306b\u306a\u308b\u3088\u3046\u306a\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u8a2d\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3068\u3044\u3046\u3053\u3068\u3067\u3059\u306d\u3002<br \/>\n\u30d1\u30e9\u30e1\u30fc\u30bf\u3068\u3057\u3066\u6e21\u3059\u304b\u3001\u5185\u90e8\u3067\u30e6\u30cb\u30fc\u30af\u306b\u306a\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3092\u3059\u308b\u304b\u306e\u4e8c\u3064\u306b\u306a\u308a\u305d\u3046\u3067\u3059\u3002<br \/>\n<a href=\"http:\/\/javafascination.blogspot.jp\/2011\/01\/job-instance-already-exists-and-is.html\">\u5185\u90e8\u3067\u8a2d\u5b9a\u65b9\u6cd5\u53c2\u8003<\/a><\/p>\n<p>\u3067\u3082\u3053\u308c\u30c6\u30b9\u30c8\u3068\u3044\u3046\u89b3\u70b9\u3060\u3068\u5168\u304f\u540c\u3058\u30c7\u30fc\u30bf\u3067\u306e\u691c\u8a3c\u304c\u3067\u304d\u306a\u3044\u306e\u3067\u8003\u3048\u7269\u3067\u3059\u306d\u30fb\u30fb\u30fb\u3002<\/p>\n<p>\u5f8c\u65e5\u5b9f\u88c5\u30bd\u30fc\u30b9\u3092git\u306b\u4e0a\u3052\u3088\u3046\u3068\u601d\u3044\u307e\u3059\u3002<\/p>\n<h3 id=\"outline__1_5\">\u53c2\u8003<\/h3>\n<p><a href=\"https:\/\/jira.spring.io\/browse\/BATCH-2383\">SimpleJobRepository should ignore non-identifying JobParameters<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Spring batch\u306eJunit\u30c6\u30b9\u30c8\u3092\u518d\u5b9f\u884c\u3057\u3088\u3046\u3068\u3057\u305f\u3089\u4e8c\u56de\u76ee\u4ee5\u964d\u3067\u30a8\u30e9\u30fc \u4e8b\u8c61 Sprin [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":93,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[86,27,24,7],"tags":[87,88,11,10],"class_list":["post-232","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-batch","category-junit","category-spring","category-error-bugs","tag-batch","tag-jobinstancealreadycompleteexception","tag-junit","tag-spring"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/ito-u-oti.com\/index.php?rest_route=\/wp\/v2\/posts\/232","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ito-u-oti.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ito-u-oti.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ito-u-oti.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ito-u-oti.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=232"}],"version-history":[{"count":5,"href":"https:\/\/ito-u-oti.com\/index.php?rest_route=\/wp\/v2\/posts\/232\/revisions"}],"predecessor-version":[{"id":463,"href":"https:\/\/ito-u-oti.com\/index.php?rest_route=\/wp\/v2\/posts\/232\/revisions\/463"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ito-u-oti.com\/index.php?rest_route=\/wp\/v2\/media\/93"}],"wp:attachment":[{"href":"https:\/\/ito-u-oti.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=232"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ito-u-oti.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=232"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ito-u-oti.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=232"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}