Tuesday, October 4, 2016

Cannot create JDBC driver of class 'oracle.jdbc.driver.OracleDriver' for connect URL

Cannot create JDBC driver of class 'oracle.jdbc.driver.OracleDriver' for connect URL 'jdbc:oracle:@devserver.ds.com:1570:APPLICATIOND'
java.sql.SQLException: No suitable driver
at java.sql.DriverManager.getDriver(DriverManager.java:278)
at org.apache.commons.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1437)
at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1371)
at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
at org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider.getConnection(LocalDataSourceConnectionProvider.java:85)
at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:113)
at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2863)
at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2859)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1870)
at ......

If you happen to get the above error, it could be that the required Oracle jar might not be in Tomcat lib directory.
In the maven dependencies, I see that Oracle-jdbc-11.2.0.1.0.jar and is exporting to the wtpwebapp's application lib directory.
I fixed the issue by copying the ojdbc6.jar file to tomcat's lib directory.
Hope this helps you.

Thursday, July 21, 2016

How to enable Maven dependencies in eclipse

When I created a new maven project, some how I am not finding the Maven dependencies in the project build path add library console.
If the Maven dependencies were not added to the project, it doesnt resolve the third party jars.
If you have faced the same issue, then add the following dependency into your pom file and do a mvn clean install and the update then update the maven project configuration

How to terminate the tomcat server ports that are already in use

Following are the steps to kill the server process that is already in use in windows
Step 1: netstat -a -o -n and it will bring up a network list,search for the local address like 127.0.0.1:6060 and note the PID (eq 18508)
C:\>netstat -a -o -n or C:\>netstat -ano
Step2 : taskkill /F /PID 18508 . Run this command to kill that process.
C:\>taskkill /F /PID 18508

Tuesday, August 5, 2014

SSH login without password

Your aim

You want to use Linux and OpenSSH to automate your tasks. Therefore you need an automatic login from host A / user a to Host B / user b. You don't want to enter any passwords, because you want to call ssh from a within a shell script.

How to do it

First log in on A as user a and generate a pair of authentication keys. Do not enter a passphrase:
a@A:~> ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/a/.ssh/id_rsa): 
Created directory '/home/a/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/a/.ssh/id_rsa.
Your public key has been saved in /home/a/.ssh/id_rsa.pub.
The key fingerprint is:
3e:4f:05:79:3a:9f:96:7c:3b:ad:e9:58:37:bc:37:e4 a@A
Now use ssh to create a directory ~/.ssh as user b on B. (The directory may already exist, which is fine):
a@A:~> ssh b@B mkdir -p .ssh
b@B's password: 
Finally append a's new public key to b@B:.ssh/authorized_keys and enter b's password one last time:
a@A:~> cat .ssh/id_rsa.pub | ssh b@B 'cat >> .ssh/authorized_keys'
b@B's password: 
From now on you can log into B as b from A as a without password:
a@A:~> ssh b@B
A note from one of our readers: Depending on your version of SSH you might also have to do the following changes:
  • Put the public key in .ssh/authorized_keys2
  • Change the permissions of .ssh to 700
  • Change the permissions of .ssh/authorized_keys2 to 640

Friday, March 21, 2014

ActionListener is called multiple times (Bug?) - dataTable binding

I am using rich dataTable with binding attribute and an actionListener to get selected row

<rich:dataTable width="100%" rows="10" id="dataTableIdentifier" value="#{viewScopedBean.getSomeList}" var="itr" align="center" >

 <h:commandLink action="#{viewScopedBean.editMethod}" id="method_edit" />

</dataTable>

The editMethod is called twice.

Reason why the editMethod called twice is because of binding variable(Strange but true)
This is because my bean is viewScoped, viewScope + binding is not a good combination.
if you really want to use binding then go for Request scope and you are all set.
if your design forces you to use view scope then use setPropertyActionListener instead of binding.

Here there is another problem in using setPropertyActionListener, this can be used only with action method in the commandLink, because your setPropertyLisener should set the required object before you call the CommandLink action. (All the actionListeners will be called before calling action)

Tuesday, November 12, 2013

Error rendering view by parent ViewHandler, try to render as portletbridge JSP page java.lang.StackOverflowError

20:49:25,194 WARN  [PortletViewHandler:257] Error rendering view by parent ViewHandler, try to render as portletbridge JSP page
java.lang.StackOverflowError
        at org.ajax4jsf.component.UIDataAdaptorBase.getBaseClientId(UIDataAdaptorBase.java:743)
        at org.ajax4jsf.component.UIDataAdaptorBase.getClientId(UIDataAdaptorBase.java:698)
        at javax.faces.component.UIComponent.getContainerClientId(UIComponent.java:363)
        at org.ajax4jsf.component.UIDataAdaptorBase.getBaseClientId(UIDataAdaptorBase.java:750)
        at org.ajax4jsf.component.UIDataAdaptorBase.getClientId(UIDataAdaptorBase.java:698)
        at javax.faces.component.UIComponent.getContainerClientId(UIComponent.java:363)
        at org.ajax4jsf.component.UIDataAdaptorBase.getBaseClientId(UIDataAdaptorBase.java:750)
        at org.ajax4jsf.component.UIDataAdaptorBase.getClientId(UIDataAdaptorBase.java:698)
        at javax.faces.component.UIComponent.getContainerClientId(UIComponent.java:363)
        at org.ajax4jsf.component.UIDataAdaptorBase.getBaseClientId(UIDataAdaptorBase.java:750)
20:49:25,649 WARN  [BaseFilter:314] MyFaces Extensions Filter should be configured to execute *AFTER* RichFaces filter. Refer to S
RV.6.2.4 section of Servlets specification on how to achieve that.

I found that I got the above console error is because of having a binding variable used for a commandlink component in error instead of using it to the datatable component.
By removing it from the commandlilnk component solves the problem.

Hope this helps for some users.

Friday, October 18, 2013

Icefaces dateTimeEntry component issue with Chrome Browser

Icefaces calendar component that is having issues when used inside a datatable which is rendered inside another datatable.
May be you come across some javascript error and upon typing some entry in date field and onblur the entry is wiped off.
else you might come across the following script error:

Uncaught TypeError: Cannot call method 'init' of undefined
(anonymous function)
runScripts
doUpdate
response
onComplete
AjaxEngine.req.xmlReq.onreadystatechange

The solution to this issue is copy the following code into your web.xml file and run, surprisingly you don't see this script error.

<context-param>
     <param-name>org.icefaces.mandatoryResourceConfiguration</param-name>
     <param-value>dateTimeEntry</param-value>
</context-param>