I am attempting to upgrade from JS Pro 3.0 to JS Pro 3.5.1.
I have some custom code for acegi to do the authentication.
I override the jdbcDaoImpl bean and implement this bean in the mtDaoAuthenticationProvider.
This does not work. Throws the following error on server start up:
java.lang.IllegalArgumentException: Cannot convert value of type [org.acegisecurity.userdetails.jdbc.JdbcDaoImpl] to required type [com.jaspersoft.jasperserver.multipleTenancy.MTUserDetailsService] for property 'MTUserDetailsService': no matching editors or conversion strategy found
I am guessing I am missing one piece in there somewhere.
Thanks in advance for your help.
Code: |
<bean id="jdbcDaoImpl" class="org.acegisecurity.userdetails.jdbc.JdbcDaoImpl"> <property name="dataSource"> <ref bean="dataSourceGBS"/> </property> <property name="usersByUsernameQuery"> <value>Select username, '1' as tenantId, password, enabled FROM v_js_user WHERE username = ?</value> </property> <property name="authoritiesByUsernameQuery"> <value>SELECT user_name as username, role_name as authority FROM v_js_user_roles WHERE user_name = ?</value> </property> </bean> <bean id="mtDaoAuthenticationProvider" class="com.jaspersoft.jasperserver.multipleTenancy.MTDaoAuthenticationProvider"> <!-- jdbcDaoImpl --> <!-- <property name="userDetailsService"><ref bean="inMemoryDaoImpl"/></property> --> <property name="userDetailsService"><ref bean="internalUserAuthorityService"/></property> <property name="MTUserDetailsService"><ref bean="jdbcDaoImpl"/></property> <property name="tenantService" ref="hibernateTenantService"/> <property name="passwordEncoder"><ref bean="passwordEncoder"/></property> </bean> </td></tr></tbody></table> |
18 Answers:
hey jfields,
We are also currently using JS 3.0, but would like to upgrade to 3.5 Community version. We have reports running on JS currently. Can you tell me if the upgrade process is simple, or would require me to delete everything in 3.0 and create new reports etc, in 3.5? Can I copy over a folder or something like that?
Thanks, Sridevi
Sridevi,
I used the export script that came bundled with JS Pro 3.0 to back up my JS database. Also did a mysqldump just in case.
Once the database was backed up, I followed the steps in the 3.5 install guild to use the 'buildomatic' scripts. The scripts have you drop the 3.0 database, create a new database based on the 3.5 architecture, setup defualt users, and import my 3.0 data.
That part went smoothly.
I can log in as the default users (superuser, jasperadmin) all seems fine.
My problem is when I modify acegi to authenitcate against an external db.
Other than that, the upgrade went very smoothly.
HTH,
Jeremy
Thanks ramnik and jfields for your replies!
I did follow your tips. i downloaded the 3.5 version. and followed the instructions in the Install Guide.
But when I come to the part of import-export, I am stuck again! The js-import.sh and js-export.sh dont seem to work. I checked the configuration according to the guide. its all good. I cant run the commands - js-import.sh --help or js-import.sh --help. or any other js-import ot js-export commands. It gives me a message -
"-bash: js-import: command not found" (ans the same for export too).
I made sure I am in the correct directory - where the js-import.sh exists - "<jasperserver-3.0-bin-unzipped directory>/scripts"
I seemed to have followed all the directions correctly, but still have no luch executing these commands. It looks like the import-export utility is not configured correctly.
I am kinda stuck here! Do you (or anyone else out there) have any tips on how to resolve this, pleeasse?!!
Thanks,
Sridevi
Hi,
I have another problem in the upgrade from 3.0 --> 3.5.
Everything went well for the steps 7.1, 7.2,7.3,7.4,7.5 of the Install Guide. I just started the section 7.6 - the actual Upgrade to 3.5, and am getting errors in the ant scripts.
I am running JasperServer on a Resin app server. Not using JBoss or Tomcat or Glassfish or any of the servers in the setup.xml file.
When I run the first command - js-ant drop-js-db, I get this error -
Buildfile: build.xml
BUILD FAILED
/opt/downloads/jasperserver-3.5.0-bin/buildomatic/build.xml:9: The following error occurred while executing this line:
/opt/downloads/jasperserver-3.5.0-bin/buildomatic/setup.xml:289: Error: Unable to determine type of app server in directory /opt/resin!
Total time: 1 second
I checked the setup.xml file, line 289. In the if statement, it is checking if the appserver is Tomcat 5, Tomcat 6, JBoss 4,5 , Glassfish V2 UR2 and thats it. So, if appserverType is not set (which it wouldnt be if it is not one of the above servers), it is throwing the error.
How can I set it to be Resin app server? If I were to create another if statement for Resin, what is the file I should check for? It is servlet-api-jar for Tomcat, sun-appserv-ant.jar for Glassfish etc.
Can someone please help me?
(I should probably start another thread for this, but I see Ramnik and Jfields are following this, so I was hoping to atleast get replies from them ;-)
Thanks,
Sridevi
hey jfields, thanks for your reply.
I added another if element in setup.xml testing for the appserver - "resin". I dont know if it is right, or if the values i gave for the diffferent properties are right, but I was able to execute the drop, create, init , import database scripts successfully.
Now, I am trying to execute the js-ant import-upgrade-ce script, and am getting this error -
13:53:36,937 ERROR ImporterImpl:109 - java.util.zip.ZipException: error in opening zip file
[java] 13:53:36,957 ERROR BaseExportImportCommand:45 - com.jaspersoft.jasperserver.api.JSExceptionWrapper: error in opening zip file
[java] com.jaspersoft.jasperserver.api.JSExceptionWrapper: java.util.zip.ZipException: error in opening zip file
[java] at java.util.zip.ZipFile.open(Native Method)
[java] at java.util.zip.ZipFile.<init>(ZipFile.java:114)
[java] at com.jaspersoft.jasperserver.export.io.ZipFileInput.open(ZipFileInput.java:51)
[java] at com.jaspersoft.jasperserver.export.ImporterImpl.performImport(ImporterImpl.java:92)
[java] at com.jaspersoft.jasperserver.export.ImportCommandImpl.process(ImportCommandImpl.java:57)
[java] at com.jaspersoft.jasperserver.export.BaseExportImportCommand.process(BaseExportImportCommand.java:87)
[java] at com.jaspersoft.jasperserver.export.ImportCommand.main(ImportCommand.java:43)
[java] Java Result: 255
It is not able to open the database import zip file.
Anyone has any idea why?
Is anyone from the JasperServer support team around? Can you please help me figure this out?
Thanks,
Sridevi
hey jfields, thanks for your reply.
I added another if element in setup.xml testing for the appserver - "resin". I dont know if it is right, or if the values i gave for the diffferent properties are right, but I was able to execute the drop, create, init , import database scripts successfully.
Now, I am trying to execute the js-ant import-upgrade-ce script, and am getting this error -
13:53:36,937 ERROR ImporterImpl:109 - java.util.zip.ZipException: error in opening zip file
[java] 13:53:36,957 ERROR BaseExportImportCommand:45 - com.jaspersoft.jasperserver.api.JSExceptionWrapper: error in opening zip file
[java] com.jaspersoft.jasperserver.api.JSExceptionWrapper: java.util.zip.ZipException: error in opening zip file
[java] at java.util.zip.ZipFile.open(Native Method)
[java] at java.util.zip.ZipFile.<init>(ZipFile.java:114)
[java] at com.jaspersoft.jasperserver.export.io.ZipFileInput.open(ZipFileInput.java:51)
[java] at com.jaspersoft.jasperserver.export.ImporterImpl.performImport(ImporterImpl.java:92)
[java] at com.jaspersoft.jasperserver.export.ImportCommandImpl.process(ImportCommandImpl.java:57)
[java] at com.jaspersoft.jasperserver.export.BaseExportImportCommand.process(BaseExportImportCommand.java:87)
[java] at com.jaspersoft.jasperserver.export.ImportCommand.main(ImportCommand.java:43)
[java] Java Result: 255
It is not able to open the database import zip file.
Anyone has any idea why?
Is anyone from the JasperServer support team around? Can you please help me figure this out?
Thanks,
Sridevi
Code: |
Make sure you have the daoAuthenticationProvider uncommented. <bean id="authenticationManager" class="org.acegisecurity.providers.ProviderManager"> <property name="providers"> <list> <!-- not on by default <ref local="ldapAuthenticationProvider"/> --> <ref local="daoAuthenticationProvider"/> <ref local="anonymousAuthenticationProvider"/> <!--ref local="jaasAuthenticationProvider"/--> </list> </property> </bean> Make sure the jdbcDaoImpl is uncommented. Also becareful of the password encoder. Uncomment if you need it. I had to override to use the encoding that the external db used. <bean id="daoAuthenticationProvider" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider"> <!-- jdbcDaoImpl --> <!-- <property name="userDetailsService"><ref bean="inMemoryDaoImpl"/></property> --> <!-- <property name="userDetailsService"><ref bean="userAuthorityService"/></property> --> <!-- <property name="passwordEncoder"><ref local="passwordEncoder"/></property> --> <property name="userDetailsService"><ref bean="jdbcDaoImpl"/></property> <property name="passwordEncoder"><ref local="passwordEncoder"/></property> </bean> This is the override to use the encoding that I use in the external db. <bean id="passwordEncoder" class="org.acegisecurity.providers.encoding.Md5PasswordEncoder"/> Override the jdbcDaoImpl giving the 2 querys that acegi will use to authenticate. I created views on the external db. That made it easier to call from here. The columns returned from these queries is important. Acegi expects the 3 columns from the first and the 2 columns from the second. The dataSource is just another bean i have set up in another file that has a jndi resource for the datasource informantion. <bean id="jdbcDaoImpl" class="org.acegisecurity.userdetails.jdbc.JdbcDaoImpl"> <property name="dataSource"> <ref bean="dataSourceGBS"/> </property> <property name="usersByUsernameQuery"> <value>Select username, password, enabled FROM v_js_user WHERE username = ?</value> </property> <property name="authoritiesByUsernameQuery"> <value>SELECT user_name as username, role_name as authority FROM v_js_user_roles WHERE user_name = ?</value> </property> </bean> Hope this helps. Note: This method will no longer work with JS v3.5. I had to switch to use jaas authentication. </td></tr></tbody></table> |
I'm currently trying to upgrade from JS 3-3.5.
I am battling with the same appServerDir problem as the previous user above.
I have Apache-TomCat installed as part of my original JS installation.
I have set appServerDir =C:\\Program Files\\Jasper\\jasperserver-2.0\\apache-tomcat
and get the following error.
C:\\Program Files\\Jasper\\jasperserver-3.5.0-bin\\buildomatic>js-ant drop-js-db
Buildfile: build.xml
BUILD FAILED
C:\\Program Files\\Jasper\\jasperserver-3.5.0-bin\\buildomatic\\build.xml:9: The foll
owing error occurred while executing this line:
C:\\Program Files\\Jasper\\jasperserver-3.5.0-bin\\buildomatic\\setup.xml:230: Error:
App server root directory ${appServerDir} not found!
Total time: 1 second
Any help would be greatly appreciated.
Regards
Sarah