I am deploying activiti-rest(5.17.0) war on tomcat (8.0.9) and postgresql(9.3.5). However it only works for the first time. After i restart tomcat i get 404.
So basically you say you've got two ways of uppercasing the same character? First time in my life I heard that
But I don't see how this could be solved for everything: if the JDK and Tomcat are both on the same locale, shouldn't it do what the locale says? So you also say that the JDK is wrong?
> So basically you say you've got two ways of uppercasing the same character? First time in my life I heard that smiley Hehe, we are accustomed to it, problematic at every platform smiley. Just to be clear we don’t have two ways of uppercasing the same letter, we have 2 different letters for english letter ‘i’ (approximately). When you lowercase ‘I’, in english you have ‘i’, in turkish you have ‘ı’. > But I don't see how this could be solved for everything: if the JDK and Tomcat are both on the same locale, shouldn't it do what the locale says? So you also say that the JDK is wrong?
No JDK is not wrong and handles this correctly. If you run the problem example, it will fail only toLowercaseTestWithTrLocale() if you have english locale; both toLowercaseTestWithTrLocale and toLowercaseTest() will fail if you have turkish locale.So when i run tomcat, it defaults to turkish locale and behaves as expected, which breaks your assumption about lower cased table name. That being said, it will not be problem for us i guess. We plan to use a customized standalone activiti engine which can live in an english locale happily ever after.
The net impact of this problem: 1- Activiti modules will not work out of the box, if you are using a locale with incompatible character mapping, the error is hard to track down 2- You can not run multiple applications in the same tomcat instance with activiti if you need your default locale. Optimal solution would be changing — if ("postgres".equals(databaseType)) { tableName = tableName.toLowerCase(); } — To if ("postgres".equals(databaseType)) { tableName = tableName.toLowerCase(englishLocale); } At https://github.com/Activiti/Activiti/blob/master/modules/activiti-engine/src/main/java/org/activiti/...
This way assumptions about lowercased table names will hold regardless of default locales.