<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4234821960632870091</id><updated>2024-10-24T17:59:28.977+05:30</updated><category term="J2me"/><category term="mysql"/><category term="BREW"/><category term="Java"/><category term="PHP"/><category term="Android"/><category term="Hibernate"/><category term="Apache"/><category term="Linux"/><category term="XAMPP"/><category term="Blackberry"/><category term="Raspberry PI"/><category term="SMTP MAIL"/><category term="AngularJS."/><category term="Iphone"/><category term="JSON"/><category term="JSP"/><category term="MYSQLDUMP"/><category term="MySql ERROR 1064 (42000)"/><category term="PDF"/><category term="Postgress SQL"/><category term="Spring"/><category term="Spring MVC"/><category term="android programming software"/><category term="ARM"/><category term="Apache2.4"/><category term="Arabic"/><category term="Auto start"/><category term="C#"/><category term="CDMA"/><category term="Cache"/><category term="Compiling Shared Library in Linux"/><category term="Compress"/><category term="Create Table"/><category term="Create database"/><category term="Cross Compile"/><category term="Ctypes"/><category term="Data Synchronisation"/><category term="Decompress"/><category term="Different Port"/><category term="Displaytag"/><category term="Encoding"/><category term="Error (0x800CCC13)"/><category term="Error 121"/><category term="Error 150"/><category term="FFMPEG"/><category term="FPDF"/><category term="File Manager Crashed"/><category term="File sharing. shared folder"/><category term="Foreign Key Constraint"/><category term="GPRS Communication"/><category term="GSM Module"/><category term="GZIP"/><category term="GoDADDY SMTP MAIL. Google SMTP MAIL"/><category term="HLS"/><category term="HTML5 Video"/><category term="HTTP Live Streaming"/><category term="Hibernate Exception"/><category term="Hibernate ORM"/><category term="How to change the attributes of jad file over OTA"/><category term="ITAPI."/><category term="ITapi make voice call restarts the application in brew."/><category term="JAVA MAIL API"/><category term="JPA"/><category term="Jad"/><category term="Jad files"/><category term="Jar"/><category term="Jar files"/><category term="JavaMail"/><category term="Javascript"/><category term="Jquery"/><category term="LAMP"/><category term="MS Exchange Server"/><category term="MS-Outlook"/><category term="MVC"/><category term="MYSQL ERROR"/><category term="MYSQL ERROR 1364"/><category term="MYSQL STATE ERROR 42000"/><category term="MYSQLDUMP ERROR"/><category term="Master Slave Replication"/><category term="Memcache"/><category term="Memcached"/><category term="Midlet"/><category term="Motorola Milestone"/><category term="Mp4"/><category term="Newtonsoft.json"/><category term="Nginx"/><category term="Nginx on Windows7"/><category term="OEM"/><category term="OTA"/><category term="Ogg"/><category term="PHP Driver for SQL 2008"/><category term="PHP-CGI"/><category term="PHP. PHPMailer"/><category term="Phonegap"/><category term="Qualcomm"/><category term="R"/><category term="RXTX"/><category term="SIM 800"/><category term="SMS"/><category term="SQL  2008"/><category term="SQL MODE"/><category term="SQLite"/><category term="SSLSessionCache"/><category term="Sending Error MS-Outlook"/><category term="Serial Communication"/><category term="Service"/><category term="Service Specific Error."/><category term="Setting Up FastCGI"/><category term="Shared Folder"/><category term="Shared Object"/><category term="Shell Script"/><category term="SqlDump"/><category term="Struts"/><category term="Symbian"/><category term="Systemctl"/><category term="Thumbnail"/><category term="Top N rows for each group in MySQL"/><category term="USB"/><category term="UTF-8"/><category term="Ubuntu"/><category term="Undefined function pg_connect()"/><category term="VMWare Centos Guest"/><category term="VMware-hgfsclient"/><category term="Validation"/><category term="Virtaul Host"/><category term="Web Server"/><category term="WebM"/><category term="WebService"/><category term="Windows 7 Host"/><category term="Windows7"/><category term="X-terminal Segmentation fault"/><category term="android app software"/><category term="gzencode"/><category term="mysql_upgrade"/><category term="mysqlcheck"/><category term="udev"/><category term="utf8mb4"/><category term="visual c++"/><category term="wap"/><category term="win32 application"/><title type='text'>Software Development Issues and Solutions</title><subtitle type='html'>Mobile application Design Development Testing and porting issues . Issues related to latest technology like Data Science, Big data and data mining, IOT, machine learning, Block Chain technology and crypto currency and etc</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://samalpramod.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4234821960632870091/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://samalpramod.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/4234821960632870091/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>samalpramod</name><uri>http://www.blogger.com/profile/10503328453756071691</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>90</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4234821960632870091.post-7103298759969772789</id><published>2022-05-03T00:46:00.015+05:30</published><updated>2024-03-01T21:39:49.592+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="udev"/><category scheme="http://www.blogger.com/atom/ns#" term="USB"/><title type='text'>Detecting a Connect Disconect of USB reader in Linux</title><content type='html'>
&lt;p&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;S&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;ometimes
when you connect a USB device or external device through USB to a
system file   USB gets connected and disconnected automatically.
Sometimes it get connected and disconnected &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;automatically.
That causes lot of problem while doing read and write operation.
Sudden disconnect creates problem in all such operations. I too faced
similar situation recently. One NFC reader was connected to my system
through a USB. I have developed a desktop application which was
continuously sending some command to the reader and displaying the
response from the reader on the desktop GUI. The &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;pooling
command had sleep of 50ms. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;So
what happens sometimes my operation failed as the NFC reader gets
disconnected &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;and
gets connected&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;While
sending command to reader and there is a disconnection then reader
will send failed response and that helps me show the error message.
Problem arises when the reader get disconnected from &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;USB
device during the sleep period and application sends commands in
between. During that period the command does reach to the reader as
it is disconnected.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span style=&quot;text-decoration: none;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;Problem
here is the application on the system should know when the USB get
disconnected so that application can take necessary action so that
the application does not fail.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;
&lt;br /&gt;

&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Fix:&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;Frankly
saying &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;Initially
I did not know what to do. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;So
for me the first solution &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;was
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;reducing
the sleep time so that I can notice the connection failure. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;Though
this was to some extent helped me to partially solve the issue there
is still a chance of disconnection and connection happening between
the sleep time provided. So I need to find a way to notify the
application that disconnection happened, and I need reset my
application. Basically, we need to know when a USB device is plugged
and unplugged.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;So
for that I did a little bit search on Google and find there are two
ways one can determine when connection and disconnection happened.
One is through Udev and second one is through Inotify. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;
&lt;br /&gt;

&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;Use
of Inotify : As you know everything in Linux is treated as file.
Inotify basically used to notify when there is any change in  a file.
So what you have to do is find the file name of the device connected
to USB and set Inotify to get an updated on any change in the file. I
am not going to give more details on that as I have not used the
same. I will certainly put some reference at the end of the blog that
can help others in future. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;Udev
: &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;I
found udev event is the most simplest way to detect USB plugged or
unplugged to a device. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;As
you know Udev is subsystem of Linux that provides device events. In
Linux all devices are put under /dev category and any device added or
removed usually find in this directory. There is a tool called
udevadm whihc basically used to manage or monitor the udev events. To
know more udevadm you can visit the link shared below. I will give
few examples of udevadm here below for reference.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;T&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;o
run &lt;a href=&quot;https://man7.org/linux/man-pages/man8/udevadm.8.html&quot; target=&quot;_blank&quot;&gt;udevadm&lt;/a&gt; and monitor the events run the following command.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;font-family: inherit; font-weight: normal;&quot;&gt;udevadm
monitor –environment&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;font-family: inherit; font-weight: normal;&quot;&gt;If
you plug or unplug any device to the system, you will see the
response on the screen as shown below in the picture.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgejMl47dra7Mqj2XxRCoWtdsjwUk8eIFdhMZCr5o3aTGAQDjektX6Doyp-fKYNh9UV9lrQ8WrhpNTs8h9nCwdGyFUpUaqlRDIBFZe0l6vSNJnogLXH8gh0TaezckC3UWSUpSuadILUHdTpBgjOEkHhFId61WAlYhHkQHLyLDOBPybYQWvnXlgkbRBW/s1301/Screenshot%20from%202022-05-03%2000-05-57.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;744&quot; data-original-width=&quot;1301&quot; height=&quot;366&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgejMl47dra7Mqj2XxRCoWtdsjwUk8eIFdhMZCr5o3aTGAQDjektX6Doyp-fKYNh9UV9lrQ8WrhpNTs8h9nCwdGyFUpUaqlRDIBFZe0l6vSNJnogLXH8gh0TaezckC3UWSUpSuadILUHdTpBgjOEkHhFId61WAlYhHkQHLyLDOBPybYQWvnXlgkbRBW/w640-h366/Screenshot%20from%202022-05-03%2000-05-57.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;font-family: inherit; font-weight: normal;&quot;&gt;Hope
this will give a fair bit of idea how the udev works. Now let us
focus on how I solve the issue. I created two shell script files . One
for when the USB gets connected or added while the other script was
for when the USB device gets disconnected. There is nothing special
in the script files. I am just writing two different values to a
file based on whether the USB is plugged or unplugged.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;font-family: inherit; font-weight: normal;&quot;&gt;The
content of the script file is somewhat as shown below.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;font-family: inherit; font-weight: normal;&quot;&gt;File
Name: device_connect.sh&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 40px; text-align: left;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: inherit; text-decoration: none;&quot;&gt;#!/bin/bash&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;div style=&quot;margin-left: 40px; text-align: left;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;
&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;p style=&quot;margin-left: 40px; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: none;&quot;&gt;echo
&quot;0 USB Device connected at $(date)&quot;&amp;gt;&amp;gt;/home/user/log/myReader.log
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;
&lt;br /&gt;

&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;font-family: inherit; font-weight: normal;&quot;&gt;File
Name: device_disconnect.sh&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;margin-left: 40px;&quot;&gt;
&lt;/div&gt;&lt;p style=&quot;margin-left: 40px;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: inherit; text-decoration: none;&quot;&gt;#!/bin/bash&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;div style=&quot;margin-left: 40px;&quot;&gt;
&lt;/div&gt;&lt;p style=&quot;margin-left: 40px;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;&lt;b&gt;echo
&quot;1 USB Device disconnected at
$(date)&quot;&amp;gt;&amp;gt;/home/user/log/myReader.log&lt;/b&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;Note
here I am writing different value to myReader.log file depending
upon whether the device is plugged or unplugged.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;font-family: inherit; font-weight: normal;&quot;&gt;Now
the script files had been created. But we need to ensure the script
files get executed when USB device plugged and removed from the
system. For that we need to create some rules and remember udev allow
users to create their own rules. Create a rule in /etc/udev/rules.d
folder and save it.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: inherit; text-decoration: none;&quot;&gt;How
to create rules:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;To
create rule you should have prior knowledge else you need to check default rules which is there in&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
/etc/udev/rules.d folder. If  the rules are not there then it may be
/lib/udev/rules.d folder. Regarding creating rules you can check the
reference URL given below&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;For
creating rules we need to know the “SUBSYSTEM”, “Vendor ID”&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;,
“Product ID”,”Action”, “RUN”. You can run the udevadmin
in monitor mode to check these values. You can get all the attributes
and values from there as shown below.&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;But
I got these values uing lsusb and dmesg command as shown below&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuXP70HsPa9WKTTDiYv7YT2AZsYoULOwms_3HD_ur33JsLZbuWprn8PzFHuhvlkhj7dN30aOOA55qi59I3rdN3uhjvsQxGeAdc11-d90cI4HMGTxs89B-cenZIFQAV7JUFMJYY4-IBg8U6KiTYghmpJWvzj2jcZXrWWX-VXkfDHMeyi40frX2qIZZA/s1301/Screenshot%20from%202022-05-02%2021-39-18.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;744&quot; data-original-width=&quot;1301&quot; height=&quot;366&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuXP70HsPa9WKTTDiYv7YT2AZsYoULOwms_3HD_ur33JsLZbuWprn8PzFHuhvlkhj7dN30aOOA55qi59I3rdN3uhjvsQxGeAdc11-d90cI4HMGTxs89B-cenZIFQAV7JUFMJYY4-IBg8U6KiTYghmpJWvzj2jcZXrWWX-VXkfDHMeyi40frX2qIZZA/w640-h366/Screenshot%20from%202022-05-02%2021-39-18.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 40px; text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: inherit; text-decoration: none;&quot;&gt;pramod@pramod-laptop:~$
lsusb&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;&lt;div style=&quot;margin-left: 40px; text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;
&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;p style=&quot;margin-left: 40px; text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: inherit; text-decoration: none;&quot;&gt;Bus
002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;&lt;div style=&quot;margin-left: 40px; text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;
&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;p style=&quot;margin-left: 40px; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: none;&quot;&gt;Bus
001 Device 004: ID 0a5c:216d Broadcom Corp. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;
&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;margin-left: 40px; text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;
&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;p style=&quot;margin-left: 40px; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: none;&quot;&gt;Bus
001 Device 003: ID 04f2:b56c Chicony Electronics Co., Ltd &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;
&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;margin-left: 40px; text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;
&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;p style=&quot;margin-left: 40px; text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;span style=&quot;background: none 0% 0% repeat scroll rgb(255, 255, 0);&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: inherit; text-decoration: none;&quot;&gt;Bus
001 Device 024: ID 1db2:0650 &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;&lt;div style=&quot;margin-left: 40px; text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;
&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;p style=&quot;margin-left: 40px; text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: inherit; text-decoration: none;&quot;&gt;Bus
001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;Highlighted one is my USB device.&lt;br /&gt;
&lt;br /&gt;

&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 40px; text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: inherit; text-decoration: none;&quot;&gt;pramod@pramod-laptop:~$
dmesg | grep usb 1-2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;&lt;div style=&quot;margin-left: 40px; text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;
&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;p style=&quot;margin-left: 40px; text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: inherit; text-decoration: none;&quot;&gt;[30743.688932]
usb 1-2: new full-speed USB device number 24 using xhci_hcd&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;&lt;div style=&quot;margin-left: 40px; text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;
&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;p style=&quot;margin-left: 40px; text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;span style=&quot;background: none 0% 0% repeat scroll rgb(255, 255, 0);&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: inherit; text-decoration: none;&quot;&gt;[30743.839216]
usb 1-2: New USB device found, idVendor=1db2, idProduct=0650&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;&lt;div style=&quot;margin-left: 40px; text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;
&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;p style=&quot;margin-left: 40px; text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: inherit; text-decoration: none;&quot;&gt;[30743.839222]
usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;&lt;div style=&quot;margin-left: 40px; text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;
&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;p style=&quot;margin-left: 40px; text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: inherit; text-decoration: none;&quot;&gt;[30743.839226]
usb 1-2: Product: Card Reader&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;&lt;div style=&quot;margin-left: 40px; text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;
&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;p style=&quot;margin-left: 40px; text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: inherit; text-decoration: none;&quot;&gt;[30743.839229]
usb 1-2: Manufacturer: DUALi INC.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;&lt;div style=&quot;margin-left: 40px; text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;
&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;p style=&quot;margin-left: 40px; text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: inherit; text-decoration: none;&quot;&gt;[30743.839232]
usb 1-2: SerialNumber: 082312130078&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: inherit; text-decoration: none;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;font-family: inherit; font-weight: normal;&quot;&gt;So
a rule created after  using the values will be look like the one
shown below.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 40px; text-align: left;&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;font-family: inherit; font-weight: normal;&quot;&gt;SUBSYSTEM==&quot;usb&quot;,
ACTION==&quot;add&quot;, ATTRS{idProduct}==&quot;0650&quot;,
ATTRS{idVendor}==&quot;1db2&quot; , RUN+=&quot;/bin/device_connect.sh&quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;&lt;div style=&quot;margin-left: 40px; text-align: left;&quot;&gt;
&lt;/div&gt;&lt;p style=&quot;margin-left: 40px; text-align: left;&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;font-family: inherit; font-weight: normal;&quot;&gt;SUBSYSTEM==&quot;usb&quot;,
ACTION==&quot;remove&quot;, ATTRS{idProduct}==&quot;0650&quot;,
ATTRS{idVendor}==&quot;1db2&quot;, RUN+=&quot;/bin/device_disconnect.sh&quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;RUN+
= means the script you want to execute after the action happened. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;font-family: inherit; font-weight: normal;&quot;&gt;Please
note the script you mentioned should be placed under /bin directory
and have the execute permission. Otherwise you may get “Permission
denied” error.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;After
rules created &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;you
need to reboot you machine to reload it otherwise you need to run the
following command to reload the rules.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;font-family: inherit; font-weight: normal;&quot;&gt;Udevadm
control --reload rules&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;Now
you are ready and you can test by plugging and unplugging device. The
script will rung and write the value to the myReader file i created. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;font-family: inherit; font-weight: normal;&quot;&gt;One
most important thing to note that you need to have the create, read
and write permission on the folder. If you don&#39;t have the permission
your script might be executed but you may not get the desired result
due to permission issue&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;
&lt;br /&gt;

&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: none;&quot;&gt;Reference
: &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;font-family: inherit; font-weight: normal;&quot;&gt;1.
&lt;a href=&quot;https://www.linuxjournal.com/content/linux-filesystem-events-inotify&quot;&gt;https://www.linuxjournal.com/content/linux-filesystem-events-inotify&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;font-family: inherit; font-weight: normal;&quot;&gt;2.
&lt;a href=&quot;https://www.linuxjournal.com/content/linux-filesystem-events-inotify&quot;&gt;https://www.linuxjournal.com/content/linux-filesystem-events-inotify&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;3.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href=&quot;http://www.mycpu.org/handle-usb-disconnect-properly/&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;http://www.mycpu.org/handle-usb-disconnect-properly/&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;font-family: inherit; font-weight: normal;&quot;&gt;4.
&lt;a href=&quot;https://unix.stackexchange.com/questions/470960/how-can-i-debug-a-udev-rule&quot;&gt;https://unix.stackexchange.com/questions/470960/how-can-i-debug-a-udev-rule&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;font-family: inherit; font-weight: normal;&quot;&gt;5.
&lt;a href=&quot;https://opensource.com/article/18/11/udev&quot;&gt;https://opensource.com/article/18/11/udev&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;font-family: inherit; font-weight: normal;&quot;&gt;6.
&lt;a href=&quot;https://man7.org/linux/man-pages/man8/udevadm.8.html&quot;&gt;https://man7.org/linux/man-pages/man8/udevadm.8.html&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;font-family: inherit; font-weight: normal;&quot;&gt;7.
&lt;a href=&quot;https://www.linuxfordevices.com/tutorials/linux/udevadm-command&quot;&gt;https://www.linuxfordevices.com/tutorials/linux/udevadm-command&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: none;&quot;&gt;&lt;span style=&quot;font-family: inherit; font-weight: normal;&quot;&gt;8.
https://www.thegeekdiary.com/beginners-guide-to-udev-in-linux/&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;
&lt;br /&gt;

&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;
&lt;br /&gt;

&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;
&lt;br /&gt;

&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;
&lt;br /&gt;

&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 100%; margin-bottom: 0cm;&quot;&gt;&lt;br /&gt;

&lt;/p&gt;

&lt;p&gt;&lt;style type=&quot;text/css&quot;&gt;h1 { margin-bottom: 0.21cm }h1.western { font-family: &quot;Liberation Serif&quot;, serif }h1.cjk { font-family: &quot;Noto Sans CJK SC Regular&quot;; font-size: 24pt }h1.ctl { font-family: &quot;FreeSans&quot;; font-size: 24pt }p { margin-bottom: 0.25cm; line-height: 120% }a:link { so-language: zxx }&lt;/style&gt;&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;form action=&quot;http://www.google.co.in/cse&quot; id=&quot;cse-search-box&quot;&gt;
  &lt;div&gt;
    &lt;input type=&quot;hidden&quot; name=&quot;cx&quot; value=&quot;partner-pub-9669148603845976:qedn6khekoj&quot; /&gt;
    &lt;input type=&quot;hidden&quot; name=&quot;ie&quot; value=&quot;ISO-8859-1&quot; /&gt;
    &lt;input type=&quot;text&quot; name=&quot;q&quot; size=&quot;50&quot; /&gt;
    &lt;input type=&quot;submit&quot; name=&quot;sa&quot; value=&quot;Search&quot; /&gt;
  &lt;/div&gt;
&lt;/form&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;http://www.google.co.in/cse/brand?form=cse-search-box&amp;amp;lang=en&quot;&gt;&lt;/script&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samalpramod.blogspot.com/feeds/7103298759969772789/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://samalpramod.blogspot.com/2022/05/detecting-connectdisconect-of-usb-reader.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4234821960632870091/posts/default/7103298759969772789'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4234821960632870091/posts/default/7103298759969772789'/><link rel='alternate' type='text/html' href='http://samalpramod.blogspot.com/2022/05/detecting-connectdisconect-of-usb-reader.html' title='Detecting a Connect Disconect of USB reader in Linux'/><author><name>samalpramod</name><uri>http://www.blogger.com/profile/10503328453756071691</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgejMl47dra7Mqj2XxRCoWtdsjwUk8eIFdhMZCr5o3aTGAQDjektX6Doyp-fKYNh9UV9lrQ8WrhpNTs8h9nCwdGyFUpUaqlRDIBFZe0l6vSNJnogLXH8gh0TaezckC3UWSUpSuadILUHdTpBgjOEkHhFId61WAlYhHkQHLyLDOBPybYQWvnXlgkbRBW/s72-w640-h366-c/Screenshot%20from%202022-05-03%2000-05-57.png" height="72" width="72"/><thr:total>0</thr:total><georss:featurename>New Delhi, Delhi, India</georss:featurename><georss:point>28.6139391 77.2090212</georss:point><georss:box>0.30370526382115415 42.052771199999995 56.924172936178849 112.3652712</georss:box></entry><entry><id>tag:blogger.com,1999:blog-4234821960632870091.post-5873016607914663607</id><published>2022-05-01T23:44:00.000+05:30</published><updated>2022-05-01T23:44:27.047+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Shell Script"/><title type='text'>Permission Denied Error on Shell script</title><content type='html'>&lt;p style=&quot;line-height: 100%; margin-bottom: 0cm; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Courier 10 Pitch;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Recently
I was working on a shell script which is very simple in nature have
only few lines of code.When I tried to run the script I got infamous
“&lt;b&gt;Permission denied&lt;/b&gt;” error . The error itself is self explanatory that the user does not have the required permission.
Suppose you have logged in as root user you may think you have all
the required permission. To check what all permission you have on the
file run ls -l command on the directory to view the file permission.
Suppose you are in home directory and if you run &lt;b&gt;ls&lt;/b&gt; command
with -l option you will view a response as shown in below image.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p align=&quot;left&quot; style=&quot;line-height: 100%; margin-bottom: 0cm;&quot;&gt;&lt;br /&gt;

&lt;/p&gt;
&lt;p align=&quot;left&quot; style=&quot;line-height: 100%; margin-bottom: 0cm;&quot;&gt;&lt;img align=&quot;left&quot; border=&quot;0&quot; height=&quot;367&quot; name=&quot;Image1&quot; src=&quot;data:image/png;base64,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IiIiIiIiIuIUhYoiIiIiIiIiIiLiFIWKIiIiIiIiIiIi4hSFiiIiIiIiIiIiIuIUhYoiIiIiIiIiIiLiFIWKIiIiIiIiIiIi4hSFiiIiIiIiIiIiIuIUhYoiIiIiIiIiIiLiFIWKIiIiIiIiIiIi4hSFiiIiIiIiIiIiIuIUhYoiIiIiIiIiIiLiFIWKIiIiIiIiIiIi4hSFiiIiIiIiIiIiIuIUhYoiIiIiIiIiIiLiFIWKIiIiIiIiIiIi4hSFiiIiIiIiIiIiIuIUhYoiIiIiIiIiIiLiFIWKIiIiIiIiIiIi4hSFiiIiIiIiIiIiIuIUhYoiIiIiIiIiIiLiFIWKIiIiIiIiIiIi4hSFiiIiIiIiIiIiIuIUhYoiIiIiIiIiIiLiFIWKIiIiIiIiIiIi4hSFiiIiIiIiIiIiIuIUhYoiIiIiIiIiIiLiFIWKIiIiIiIiIiIi4hSFiiIiIiIiIiIiIuIUhYoiIiIiIiIiIiLiFIWKIiIiIiIiIiIi4hSFiiIiIiIiIiIiIuIUhYoiIiIiIiIiIiLiFIWKIiIiIiIiIiIi4hSFiiIiIiIiIiIiIuIUhYoiIiIiIiIiIiLiFIWKIiIiIiIiIiIi4hSFiiIiIiIiIiIiIuIUhYoiIiIiIiIiIiLiFIWKIiIiIiIiIiIi4hSFiiIiIiIiIiIiIuIUhYoiIiIiIiIiIiLiFIWKIiIiIiIiIiIi4hSFiiIiIiIiIiIiIuIUhYoiIiIiIiIiIiLiFIWKIiIiIiIiIiIi4hSFiiIiIiIiIiIiIuIUhYoiIiIiIiIiIiLiFIWKIiIiIiIiIiIi4hSFiiIiIiIiIiIiIuIUhYoiIiIiIiIiIiLiFIWKIiIiIiIiIiIi4hSFiiIiIiIiIiIiIuIUhYoiIiIiIiIiIiLiFIWKIiIiIiIiIiIi4hSFiiIiIiIiIiIiIuIUhYoiIiIiIiIiIiLiFIWKIiIiIiIiIiIi4hSFiiIiIiIiIiIiIuIUhYoiIiIiIiIiIiLiFIWKIiIiIiIiIiIi4hSFiiIiIiIiIiIiIuIUhYoiIiIiIiIiIiLiFIWKIiIiIiIiIiIi4hSFiiIiIiIiIiIiIuIUhYoiIiIiIiIiIiLiFIWKIiIiIiIiIiIi4hSFiiIiIiIiIiIiIuIUhYoiIiIiIiIiIiLiFIWKIiIiIiIiIiIi4hSFiiIiIiIiIiIiIuIUhYoiIiIiIiIiIiLiFIWKIiIiIiIiIiIi4hSFiiIiIiIiIiIiIuIUhYoiIiIiIiIiIiLiFIWKIiIiIiIiIiIi4hSFiiIiIiIiIiIiIuIUhYoiIiIiIiIiIiLiFIWKIiIiIiIiIiIi4hSFiiIiIiIiIiIiIuIUhYoiIiIiIiIiIiLiFIWKIiIiIiIiIiIi4hSFiiIiIiIiIiIiIuIUhYoiIiIiIiIiIiLiFIWKIiIiIiIiIiIi4hSFiiIiIiIiIiIiIuIUhYoiIiIiIiIiIiLiFIWKIiIiIiIiIiIi4hSFiiIiIiIiIiIiIuIUhYoiIiIiIiIiIiLiFIWKIiIiIiIiIiIi4hSFiiIiIiIiIiIiIuIUhYoiIiIiIiIiIvL/7dghAcAgAADBKRKsAv0DUYEEqOkJxPs79xUeElMRAAAAAEhMRQAAAAAgMRUBAAAAgMRUBAAAAAASUxEAAAAASExFAAAAACAxFQEAAACAxFQEAAAAABJTEQAAAABITEUAAAAAIDEVAQAAAIDEVAQAAAAAElMRAAAAAEhMRQAAAAAgMRUBAAAAgMRUBAAAAAASUxEAAAAASExFAAAAACAxFQEAAACAxFQEAAAAABJTEQAAAABITEUAAAAAIDEVAQAAAIDEVAQAAAAAElMRAAAAAEhMRQAAAAAgMRUBAAAAgMRUBAAAAAASUxEAAAAASExFAAAAACAxFQEAAACAxFQEAAAAABJTEQAAAABITEUAAAAAIDEVAQAAAIDEVAQAAAAAElMRAAAAAEhMRQAAAAAgMRUBAAAAgMRUBAAAAAASUxEAAAAASExFAAAAACAxFQEAAACAxFQEAAAAABJTEQAAAABITEUAAAAAIDEVAQAAAIDEVAQAAAAAElMRAAAAAEhMRQAAAAAgMRUBAAAAgMRUBAAAAAASUxEAAAAASExFAAAAACAxFQEAAACAxFQEAAAAABJTEQAAAABITEUAAAAAIDEVAQAAAIDEVAQAAAAAElMRAAAAAEhMRQAAAAAgMRUBAAAAgMRUBAAAAAASUxEAAAAASExFAAAAACAxFQEAAACAxFQEAAAAABJTEQAAAABITEUAAAAAIDEVAQAAAIDEVAQAAAAAElMRAAAAAEhMRQAAAAAgMRUBAAAAgMRUBAAAAAASUxEAAAAASExFAAAAACAxFQEAAACAxFQEAAAAABJTEQAAAABITEUAAAAAIDEVAQAAAIDEVAQAAAAAElMRAAAAAEhMRQAAAAAgMRUBAAAAgMRUBAAAAAASUxEAAAAASExFAAAAACAxFQEAAACAxFQEAAAAABJTEQAAAABITEUAAAAAIDEVAQAAAIDEVAQAAAAAElMRAAAAAEhMRQAAAAAgMRUBAAAAgMRUBAAAAAASUxEAAAAASExFAAAAACAxFQEAAACAxFQEAAAAABJTEQAAAABITEUAAAAAIDEVAQAAAIDEVAQAAAAAElMRAAAAAEhMRQAAAAAgMRUBAAAAgMRUBAAAAAASUxEAAAAASExFAAAAACAxFQEAAACAxFQEAAAAABJTEQAAAABITEUAAAAAIDEVAQAAAIDEVAQAAAAAElMRAAAAAEhMRQAAAAAgMRUBAAAAgMRUBAAAAAASUxEAAAAASExFAAAAACAxFQEAAACAxFQEAAAAABJTEQAAAABITEUAAAAAIDEVAQAAAIDEVAQAAAAAElMRAAAAAEhMRQAAAAAgMRUBAAAAgMRUBAAAAAASUxEAAAAASExFAAAAACAxFQEAAACAxFQEAAAAABJTEQAAAABITEUAAAAAIDEVAQAAAIDEVAQAAAAAElMRAAAAAEhMRQAAAAAgMRUBAAAAgMRUBAAAAAASUxEAAAAASExFAAAAACAxFQEAAACAxFQEAAAAABJTEQAAAABITEUAAAAAIDEVAQAAAIDEVAQAAAAAElMRAAAAAEhMRQAAAAAgMRUBAAAAgMRUBAAAAAASUxEAAAAASExFAAAAACAxFQEAAACAxFQEAAAAABJTEQAAAABITEUAAAAAIDEVAQAAAIDEVAQAAAAAElMRAAAAAEhMRQAAAAAgMRUBAAAAgMRUBAAAAAASUxEAAAAASExFAAAAACAxFQEAAACAxFQEAAAAABJTEQAAAABITEUAAAAAIDEVAQAAAIDEVAQAAAAAElMRAAAAAEhMRQAAAAAgMRUBAAAAgMRUBAAAAAASUxEAAAAASExFAAAAACAxFQEAAACAxFQEAAAAABJTEQAAAAC4Wvs88x2//gB3sDGe6xgkUQAAAABJRU5ErkJggg==&quot; width=&quot;643&quot; /&gt;
&lt;br /&gt;

&lt;/p&gt;
&lt;p align=&quot;left&quot; style=&quot;line-height: 100%; margin-bottom: 0cm;&quot;&gt;&lt;br /&gt;

&lt;/p&gt;
&lt;p align=&quot;left&quot; style=&quot;line-height: 100%; margin-bottom: 0cm;&quot;&gt;&lt;span style=&quot;font-family: Courier 10 Pitch;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;line-height: 100%; margin-bottom: 0cm;&quot;&gt;&lt;span style=&quot;font-family: Courier 10 Pitch;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;line-height: 100%; margin-bottom: 0cm;&quot;&gt;&lt;span style=&quot;font-family: Courier 10 Pitch;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;line-height: 100%; margin-bottom: 0cm;&quot;&gt;&lt;span style=&quot;font-family: Courier 10 Pitch;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;line-height: 100%; margin-bottom: 0cm;&quot;&gt;&lt;span style=&quot;font-family: Courier 10 Pitch;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;line-height: 100%; margin-bottom: 0cm;&quot;&gt;&lt;span style=&quot;font-family: Courier 10 Pitch;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;line-height: 100%; margin-bottom: 0cm;&quot;&gt;&lt;span style=&quot;font-family: Courier 10 Pitch;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;line-height: 100%; margin-bottom: 0cm;&quot;&gt;&lt;span style=&quot;font-family: Courier 10 Pitch;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;line-height: 100%; margin-bottom: 0cm;&quot;&gt;&lt;span style=&quot;font-family: Courier 10 Pitch;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;line-height: 100%; margin-bottom: 0cm;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: Courier 10 Pitch;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p align=&quot;left&quot; style=&quot;line-height: 100%; margin-bottom: 0cm;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: Courier 10 Pitch;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Fixing
the Issue : &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;div style=&quot;line-height: 100%; margin-bottom: 0cm; text-align: left;&quot;&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Courier 10 Pitch;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;If
you dont have the permission then use chmod command to provide
required permission for the user. Badically the .sh script file
should have the execute permission for the user to run. Run the
following command to provide execute permission.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p align=&quot;left&quot; style=&quot;line-height: 100%; margin-bottom: 0cm;&quot;&gt;&lt;br /&gt;

&lt;/p&gt;
&lt;p style=&quot;line-height: 100%; margin-bottom: 0cm; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Courier 10 Pitch;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;chmod
+ x &amp;lt;Name of the script file&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 100%; margin-bottom: 0cm; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Courier 10 Pitch;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;otherwise
you can also provide execute permission by providing the following
command&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 100%; margin-bottom: 0cm; text-align: left;&quot;&gt; 
&lt;/p&gt;
&lt;p style=&quot;line-height: 100%; margin-bottom: 0cm; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Courier 10 Pitch;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;chmod
777 &amp;lt;script file name&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p align=&quot;left&quot; style=&quot;line-height: 100%; margin-bottom: 0cm;&quot;&gt;&lt;br /&gt;

&lt;/p&gt;
&lt;p align=&quot;left&quot; style=&quot;line-height: 100%; margin-bottom: 0cm;&quot;&gt;&lt;span style=&quot;font-family: Courier 10 Pitch;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Please
note permission denied error can be due any file permission. In my
case I need execute permission to execute the script file. But you can
get this error while trying to read and write file on which you don&#39;t
have the permission.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p align=&quot;left&quot; style=&quot;line-height: 100%; margin-bottom: 0cm;&quot;&gt;&lt;br /&gt;

&lt;/p&gt;
&lt;p align=&quot;left&quot; style=&quot;line-height: 100%; margin-bottom: 0cm;&quot;&gt;&lt;span style=&quot;font-family: Courier 10 Pitch;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;But
my story does not end here. It is bit longer and I thought I need to
share this so that it can help some readers in future.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 100%; margin-bottom: 0cm; text-align: left;&quot;&gt;&lt;br /&gt;

&lt;/p&gt;
&lt;p style=&quot;line-height: 100%; margin-bottom: 0cm; text-align: left;&quot;&gt; &lt;span style=&quot;font-family: Courier 10 Pitch;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Please
note when executing a shell script you have lots of Linux commands
that is getting executed when your script runs. In my shell script I
was doing a file read write operation depending upon certain 
condition. So even after providing execute permission I was still
getting “Permission Denied” error. It took me sometime to
understand why I am getting the error. On my oversight initially I
could not read the error message carefully and got overawed by just viewing &quot;Permission denied&quot; error. I will
suggest when you get this error please carefully read the error
message. The message will clearly show the line or file on which you
got the “Permission Denied” error. As I told you before I was
doing file read/write operation on a file. As I had logged in as a
root user I though I have all the permission on all the files which
is a bit oversight from my end. I checked permission of the file and
find root user does not have write permission on that particular
file. I again use the chmod command to provide write permission to
the user. After that my shell script run thoroughly without any
glitch.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 100%; margin-bottom: 0cm; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Courier 10 Pitch;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;b&gt;Reference :&lt;/b&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 100%; margin-bottom: 0cm; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Courier 10 Pitch;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;1. https://fedingo.com/how-to-fix-permission-denied-error-while-running-shell-script/&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p align=&quot;left&quot; style=&quot;line-height: 100%; margin-bottom: 0cm;&quot;&gt;&lt;br /&gt;

&lt;/p&gt;
&lt;p align=&quot;left&quot; style=&quot;line-height: 100%; margin-bottom: 0cm;&quot;&gt;&lt;br /&gt;

&lt;/p&gt;

&lt;p&gt;&lt;style type=&quot;text/css&quot;&gt;p { margin-bottom: 0.25cm; line-height: 120% }&lt;/style&gt;&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;form action=&quot;http://www.google.co.in/cse&quot; id=&quot;cse-search-box&quot;&gt;
  &lt;div&gt;
    &lt;input type=&quot;hidden&quot; name=&quot;cx&quot; value=&quot;partner-pub-9669148603845976:qedn6khekoj&quot; /&gt;
    &lt;input type=&quot;hidden&quot; name=&quot;ie&quot; value=&quot;ISO-8859-1&quot; /&gt;
    &lt;input type=&quot;text&quot; name=&quot;q&quot; size=&quot;50&quot; /&gt;
    &lt;input type=&quot;submit&quot; name=&quot;sa&quot; value=&quot;Search&quot; /&gt;
  &lt;/div&gt;
&lt;/form&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;http://www.google.co.in/cse/brand?form=cse-search-box&amp;amp;lang=en&quot;&gt;&lt;/script&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samalpramod.blogspot.com/feeds/5873016607914663607/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://samalpramod.blogspot.com/2022/05/permission-denied-error-on-shell-script.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4234821960632870091/posts/default/5873016607914663607'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4234821960632870091/posts/default/5873016607914663607'/><link rel='alternate' type='text/html' href='http://samalpramod.blogspot.com/2022/05/permission-denied-error-on-shell-script.html' title='Permission Denied Error on Shell script'/><author><name>samalpramod</name><uri>http://www.blogger.com/profile/10503328453756071691</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4234821960632870091.post-3760144799153031393</id><published>2022-04-28T23:34:00.001+05:30</published><updated>2022-05-25T17:25:26.053+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="RXTX"/><category scheme="http://www.blogger.com/atom/ns#" term="Serial Communication"/><category scheme="http://www.blogger.com/atom/ns#" term="Ubuntu"/><title type='text'>Working with RXTXcomm.jar for Ubuntu 16.04 LTS for serial communication</title><content type='html'>&lt;p&gt;I have been working on IOT based project where I have to
connect with a NFC device and communicate with the device using serial
communication. I have used RXTXComm.jar on window. Windows 10 is my development
environment. I started developing the application, and when almost finished I
came to know that my production environment is Linux. Basically, I need to run
the application where the system has Ubuntu 16.04 LTS as OS. As most developer knows
RXTXComm.jar uses a dll file called “rxtxSerial.dll” for window OS to
communicate with serial ports. On migrating java code to Ubuntu I need to add
the shared library(.so file) for&amp;nbsp; “rxtxSerial.dll”
to communicate with the server. That is not a big challenge as these files are
available on the web &amp;nbsp;and can be downloaded
from the URL &lt;a href=&quot;http://rxtx.qbang.org/pub/rxtx/rxtx-2.0-7pre2/INSTALL&quot;&gt;below&lt;/a&gt;.&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;&quot;&gt;&lt;a href=&quot;http://rxtx.qbang.org/pub/rxtx/rxtx-2.0-7pre2/INSTALL&quot;&gt;&lt;span style=&quot;background: white; border: none windowtext 1.0pt; mso-border-alt: none windowtext 0cm; padding: 0cm;&quot;&gt;http://rxtx.qbang.org/pub/rxtx/rxtx-2.0-7pre2/INSTALL&lt;/span&gt;&lt;/a&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;You will get all the .so files as per your system
requirement.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;Whether your system is 32
bit or 64 bit you can use the respective .so file from the downloaded
resources. Make sure your follow the instruction for installing the shared
library. I got the required shared library(.so file) for &lt;a href=&quot;http://rxtx.qbang.org/wiki/index.php/Installation_on_Linux&quot; target=&quot;_blank&quot;&gt;RXTXComm.jar&lt;/a&gt; and able
to run my GUI application for serial communication. &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;The .so file should be in your java library
path or you can add it to source folder. Here too there was another surprise
for me. I could not get COM ports connected to my system using the API
available in RXTXComm.jar. In my system (Ububtu 16.04 LTS) ttyUSB0 is the only COM
port available and it was clearly visible when I run “lsusb” or&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;“dmesg | grep ttyUSB” command from terminal.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;But it was not showing in my application
where I was populating a combo box with available serial ports. After a lot of
search on Google I came to know that we need to provide correct permission
ttySxx or ttyUSBxx &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;which is basically in
/dev folder. The user you are logged in must have to be in “dialout” group. If
you run a ls-ltr command as show below you can view the serial ports with their
permission.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;&quot;&gt;$ ls -ltr /dev/tty*&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;&quot;&gt;crw-rw---- 1 root dialout 4, 65 2022-04-28 01:08 /dev/ttyUSB0&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;&quot;&gt;crw-rw---- 1 root dialout 4, 66 2012-04-28 01:08 /dev/ttyS1&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;&quot;&gt;crw-rw---- 1 root dialout 4, 66 2012-04-28 01:08 /dev/ttyS2&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;&quot;&gt;To add the root user or any user to dialout group use the following
command.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;&quot;&gt;sudo usermod -a -G dialout username&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;&quot;&gt;After running the above command I could able to get list of COM
ports. In my case there is only one USB COM port named ttyUSB0. Still there is
a challenge as the production environment where my application will work is
32bit device. Here my PC on which I was testing the application is 64 bit.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;To make sure the application runs on 32 bit Ubuntu,
I created a runnable jar file. I copied the RXTXComm.jar and librxtxSerial.so
in the same location where my runnable jar. Then I used the following command
to run my runnable to jar to view the GUI. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;&quot;&gt;$ sudo java -jar myapp.jar&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;&quot;&gt;Application run successfully and I did able view the&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;COM port, connect the COM port and communicate
with the device connected to the COM port.&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;&quot;&gt;Hope this post helps the budding developers and they should not face the same issue as I did. Lastly I put down the refence sites that helped me to solve the above issue.&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;&quot;&gt;References :&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;1. http://rxtx.qbang.org/wiki/index.php/Installation&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;2. https://stackoverflow.com/questions/38753097/unable-to-find-serial-ports&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;3. https://stackoverflow.com/questions/15533310/rxtx-cant-list-port-on-ubuntu&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;var(--ff-mono)&amp;quot;,serif; font-size: 10.0pt; mso-bidi-font-family: &amp;quot;Courier New&amp;quot;; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: EN-IN;&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;form action=&quot;http://www.google.co.in/cse&quot; id=&quot;cse-search-box&quot;&gt;
  &lt;div&gt;
    &lt;input type=&quot;hidden&quot; name=&quot;cx&quot; value=&quot;partner-pub-9669148603845976:qedn6khekoj&quot; /&gt;
    &lt;input type=&quot;hidden&quot; name=&quot;ie&quot; value=&quot;ISO-8859-1&quot; /&gt;
    &lt;input type=&quot;text&quot; name=&quot;q&quot; size=&quot;50&quot; /&gt;
    &lt;input type=&quot;submit&quot; name=&quot;sa&quot; value=&quot;Search&quot; /&gt;
  &lt;/div&gt;
&lt;/form&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;http://www.google.co.in/cse/brand?form=cse-search-box&amp;amp;lang=en&quot;&gt;&lt;/script&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samalpramod.blogspot.com/feeds/3760144799153031393/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://samalpramod.blogspot.com/2022/04/working-with-rxtxcommjar-for-ubuntu.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4234821960632870091/posts/default/3760144799153031393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4234821960632870091/posts/default/3760144799153031393'/><link rel='alternate' type='text/html' href='http://samalpramod.blogspot.com/2022/04/working-with-rxtxcommjar-for-ubuntu.html' title='Working with RXTXcomm.jar for Ubuntu 16.04 LTS for serial communication'/><author><name>samalpramod</name><uri>http://www.blogger.com/profile/10503328453756071691</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4234821960632870091.post-8414204422753203919</id><published>2022-04-28T12:04:00.001+05:30</published><updated>2022-04-28T12:04:33.876+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="visual c++"/><category scheme="http://www.blogger.com/atom/ns#" term="win32 application"/><title type='text'> Building a 32 bit application on 64 bit window </title><content type='html'>&lt;p&gt;Life is not that easy as it seems particularly if you are developer.&amp;nbsp; I hope all of the developers reading this
will agree with me. I have windows 10 system having visual studio 2017. I have
to compile a C# GUI application that can run on 32 bit windows specifically that can run on a windows XP. Does not that
sound very easy?&amp;nbsp;You can do this by just
setting the build configuration as shown in the below image then build&amp;nbsp; the application. Seems like a cake walk, is not it?&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;mso-no-proof: yes;&quot;&gt;&lt;br /&gt;&lt;!--[endif]--&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiyXScpBXLpFZxCWNgdPPI8ekCzi54JyvJd1VJ3YDYbu05q1dud1oGtksSy9R7wHZ4YA72cdnfwsydytzYG_LSq2wJJQPEw8GMgruqXg8Xq3MmYGkmarmTrNuQB5c_bEP7MTCbGMQ0EsfsB2w4TZQ802hFjtSI9N9xTouaSraZqfj2Vouw0m3JQc7s/s697/buildConfig32.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;393&quot; data-original-width=&quot;697&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiyXScpBXLpFZxCWNgdPPI8ekCzi54JyvJd1VJ3YDYbu05q1dud1oGtksSy9R7wHZ4YA72cdnfwsydytzYG_LSq2wJJQPEw8GMgruqXg8Xq3MmYGkmarmTrNuQB5c_bEP7MTCbGMQ0EsfsB2w4TZQ802hFjtSI9N9xTouaSraZqfj2Vouw0m3JQc7s/w640-h360/buildConfig32.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;I did the same thing and compile the application and copy the application on windows XP machine to run on the application.
&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;But it did not run on that particular
machine I had copied to. I could not understand what
could be the issue. Every time I tried to run the application it throws an
error “ Not a valid win32 application”. I searched&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;a lot on Google. People advised to compile it
for x86 rather than x64. Since I had already compiled that for 32 bit it should
not be a problem in my case. &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;Though I
tried to implement their suggestion it did not worked for me. Some suggest to
check the “.NET target framework” for xp. Since I am not using any framework
this option also ruled out. Lastly after a lot of effort someone suggested me
to check&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;platform toolset and set it to
XP as shown in the below picture.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;br /&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6InCZGrt1a7WAlkEj8qGKLFH9FiJ9ac8gqtsDTXlAe7x3_ks2TRbTGdnOjEl6ZOxWNaUom0sTYFnFaTV7rciRGVsVtlMh10b3JCHrYwNBF0oebSXOXw1dQOkiMJl34qs1kNthvi3gFZpksPtD_smpQ2VcsPf-4s1o_0UvnNKx0_cBIYJt40xnIjH-/s937/buildConfigWinXP.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;489&quot; data-original-width=&quot;937&quot; height=&quot;334&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6InCZGrt1a7WAlkEj8qGKLFH9FiJ9ac8gqtsDTXlAe7x3_ks2TRbTGdnOjEl6ZOxWNaUom0sTYFnFaTV7rciRGVsVtlMh10b3JCHrYwNBF0oebSXOXw1dQOkiMJl34qs1kNthvi3gFZpksPtD_smpQ2VcsPf-4s1o_0UvnNKx0_cBIYJt40xnIjH-/w640-h334/buildConfigWinXP.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;&lt;/p&gt;Remember platform toolset must be set to&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;“Visual Studio 2017 -Window XP(V141_xp). If
you don’t have the toolset then please download and install it from Microsoft site.
After making the changes I am able to run my application on windows XP machine.
Hope this helps some developers while they compile their application for targeting
Windows XP or similar OS.&lt;o:p&gt;&lt;/o:p&gt;&lt;p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;Below is the list of sites that helped me solve the issue and I think it is my moral obligation to mention their name.&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;Reference Site :&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;1.&amp;nbsp;https://social.msdn.microsoft.com/Forums/vstudio/en-US/990fb1a1-3940-421b-ab13-7ddcde5c00d5/exe-is-not-a-valid-win32-application?forum=vcgeneral&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;2.&amp;nbsp;&amp;nbsp;https://social.msdn.microsoft.com/Forums/vstudio/en-US/47ef555b-99fb-411c-9a13-099b094884d5/not-a-valid-win32-application?forum=vbgeneral&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;3.&amp;nbsp;https://social.msdn.microsoft.com/Forums/en-US/f699eb18-4090-479c-a2ac-a3c68bc46549/vs-2017-build-x86-for-2003-r2-exe-is-not-a-valid-win32-application?forum=vcgeneral&lt;/p&gt;&lt;br /&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;form action=&quot;http://www.google.co.in/cse&quot; id=&quot;cse-search-box&quot;&gt;
  &lt;div&gt;
    &lt;input type=&quot;hidden&quot; name=&quot;cx&quot; value=&quot;partner-pub-9669148603845976:qedn6khekoj&quot; /&gt;
    &lt;input type=&quot;hidden&quot; name=&quot;ie&quot; value=&quot;ISO-8859-1&quot; /&gt;
    &lt;input type=&quot;text&quot; name=&quot;q&quot; size=&quot;50&quot; /&gt;
    &lt;input type=&quot;submit&quot; name=&quot;sa&quot; value=&quot;Search&quot; /&gt;
  &lt;/div&gt;
&lt;/form&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;http://www.google.co.in/cse/brand?form=cse-search-box&amp;amp;lang=en&quot;&gt;&lt;/script&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samalpramod.blogspot.com/feeds/8414204422753203919/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://samalpramod.blogspot.com/2022/04/building-32-bit-application-on-64-bit.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4234821960632870091/posts/default/8414204422753203919'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4234821960632870091/posts/default/8414204422753203919'/><link rel='alternate' type='text/html' href='http://samalpramod.blogspot.com/2022/04/building-32-bit-application-on-64-bit.html' title=' Building a 32 bit application on 64 bit window '/><author><name>samalpramod</name><uri>http://www.blogger.com/profile/10503328453756071691</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiyXScpBXLpFZxCWNgdPPI8ekCzi54JyvJd1VJ3YDYbu05q1dud1oGtksSy9R7wHZ4YA72cdnfwsydytzYG_LSq2wJJQPEw8GMgruqXg8Xq3MmYGkmarmTrNuQB5c_bEP7MTCbGMQ0EsfsB2w4TZQ802hFjtSI9N9xTouaSraZqfj2Vouw0m3JQc7s/s72-w640-h360-c/buildConfig32.png" height="72" width="72"/><thr:total>0</thr:total><georss:featurename>New Delhi, Delhi, India</georss:featurename><georss:point>28.6139391 77.2090212</georss:point><georss:box>0.30370526382115415 42.052771199999995 56.924172936178849 112.3652712</georss:box></entry><entry><id>tag:blogger.com,1999:blog-4234821960632870091.post-1246120388988963879</id><published>2020-09-07T00:06:00.001+05:30</published><updated>2020-09-07T00:06:39.048+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="File Manager Crashed"/><category scheme="http://www.blogger.com/atom/ns#" term="Raspberry PI"/><category scheme="http://www.blogger.com/atom/ns#" term="X-terminal Segmentation fault"/><title type='text'>File Manager Crash in Raspberry Pi3</title><content type='html'>&lt;p&gt;Working on Raspberry Pi project, I updated the OS using
normal apt-get update command. After update I suddenly found the File manager is
crashing. On clicking the file manager, Raspberry Pi opens the file manager
window and closes immediately after that. Searched a lot on google for the
reason for the same. Came to know that the file manager application “pcmanfm” had
been corrupted. &amp;nbsp;Developers in the Raspberry
PI forum mainly suggest to update and upgrade Raspberry Pi to get it corrected.
In most of the cases if you try a normal update you may not able to resolve the
issue.&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;I tried the following commands for fixing the issue.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;sudo apt-get update &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;sudo apt-get full-upgrade -y&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;sudo autoremove -y&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;tab-stops: center 225.65pt;&quot;&gt;sudo apt-get reboot&lt;span style=&quot;mso-tab-count: 1;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;In most of the cases the above steps will solve the file
manager crash issue. Now the file manager can behave properly. But to my bad luck
even trying the above four commands I could not recover the file manager, it crashed
every time I tried to open file manager. To get the actual reason of crashing
of the file manager try to run file manager from terminal using the following
command.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;sudo pcmanfm&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;You will get a message like the one shown below.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;“** Message: 09:18:54.081: x-terminal-emulator has very
limited support, consider choose another terminal&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;Segmentation fault&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;Since the above options not worked, it is better to try and reinstall
“pcmanfm” again. Use the following command to reinstall “pcmanfm” on Raspberry
Pi.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;sudo apt-get install –reinstall pcmanfm&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;After successful reinstall try to run pcmanfm from the
terminal. Now the file manager should open file manager and you can do what all
your file operation using GUI.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;form action=&quot;http://www.google.co.in/cse&quot; id=&quot;cse-search-box&quot;&gt;
  &lt;div&gt;
    &lt;input type=&quot;hidden&quot; name=&quot;cx&quot; value=&quot;partner-pub-9669148603845976:qedn6khekoj&quot; /&gt;
    &lt;input type=&quot;hidden&quot; name=&quot;ie&quot; value=&quot;ISO-8859-1&quot; /&gt;
    &lt;input type=&quot;text&quot; name=&quot;q&quot; size=&quot;50&quot; /&gt;
    &lt;input type=&quot;submit&quot; name=&quot;sa&quot; value=&quot;Search&quot; /&gt;
  &lt;/div&gt;
&lt;/form&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;http://www.google.co.in/cse/brand?form=cse-search-box&amp;amp;lang=en&quot;&gt;&lt;/script&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samalpramod.blogspot.com/feeds/1246120388988963879/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://samalpramod.blogspot.com/2020/09/file-manager-crash-in-raspberry-pi3.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4234821960632870091/posts/default/1246120388988963879'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4234821960632870091/posts/default/1246120388988963879'/><link rel='alternate' type='text/html' href='http://samalpramod.blogspot.com/2020/09/file-manager-crash-in-raspberry-pi3.html' title='File Manager Crash in Raspberry Pi3'/><author><name>samalpramod</name><uri>http://www.blogger.com/profile/10503328453756071691</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4234821960632870091.post-2842132139028806682</id><published>2020-09-06T22:46:00.005+05:30</published><updated>2020-09-20T17:52:48.128+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="GPRS Communication"/><category scheme="http://www.blogger.com/atom/ns#" term="GSM Module"/><category scheme="http://www.blogger.com/atom/ns#" term="Raspberry PI"/><category scheme="http://www.blogger.com/atom/ns#" term="SIM 800"/><title type='text'>Working with GSM module in Raspberry Pi 3</title><content type='html'>&lt;p&gt;&lt;/p&gt;&lt;p class=&quot;MsoTitle&quot;&gt;Last few days I had tried my hands on working with GSM
module with Raspberry PI 3. I had Raspberry PI 3B device on which I have used SIM
&amp;nbsp;800 module having RPI GSM ADD-on V2.3.
My PI device have native Raspbian buster as OS. Trying set up the SIM with the
GSM module take bit of time connect to internet. I am using an Airtel 4G SIM
for internet connection I need to search a bit on Google to set up the GSM
module for an active internet connection and start browsing. Listing here the
steps I have used. &amp;nbsp;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;b&gt;Hardware Used: &lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class=&quot;MsoListParagraphCxSpFirst&quot; style=&quot;mso-list: l0 level1 lfo1; text-indent: -18.0pt;&quot;&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=&quot;mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;&quot;&gt;&lt;span style=&quot;mso-list: Ignore;&quot;&gt;1.&lt;span style=&quot;font: 7.0pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Raspberry PI 3 B&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;mso-list: l0 level1 lfo1; text-indent: -18.0pt;&quot;&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=&quot;mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;&quot;&gt;&lt;span style=&quot;mso-list: Ignore;&quot;&gt;2.&lt;span style=&quot;font: 7.0pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;GSM module SIM 800&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;mso-list: l0 level1 lfo1; text-indent: -18.0pt;&quot;&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=&quot;mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;&quot;&gt;&lt;span style=&quot;mso-list: Ignore;&quot;&gt;3.&lt;span style=&quot;font: 7.0pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Airtel SIM&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;mso-list: l0 level1 lfo1; text-indent: -18.0pt;&quot;&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=&quot;mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;&quot;&gt;&lt;span style=&quot;mso-list: Ignore;&quot;&gt;4.&lt;span style=&quot;font: 7.0pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;7”” inch Waveshare LCD for display&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;mso-list: l0 level1 lfo1; text-indent: -18.0pt;&quot;&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=&quot;mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;&quot;&gt;&lt;span style=&quot;mso-list: Ignore;&quot;&gt;5.&lt;span style=&quot;font: 7.0pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;USB charger for (5V 1 amp for Raspberry PI)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;mso-list: l0 level1 lfo1; text-indent: -18.0pt;&quot;&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=&quot;mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;&quot;&gt;&lt;span style=&quot;mso-list: Ignore;&quot;&gt;6.&lt;span style=&quot;font: 7.0pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Two additional USB charger for power supply to
GSM Module and LCD)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoListParagraphCxSpLast&quot; style=&quot;mso-list: l0 level1 lfo1; text-indent: -18.0pt;&quot;&gt;&lt;!--[if !supportLists]--&gt;&lt;b&gt;&lt;span style=&quot;mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;&quot;&gt;&lt;span style=&quot;mso-list: Ignore;&quot;&gt;7.&lt;span style=&quot;font: 7.0pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;!--[endif]--&gt;Keyboard and mouse&lt;b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;b&gt;Connection: &lt;/b&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;Put the SIM in the SIM holder of the GSM
module. Place the GSM module on top of Raspberry PI using 32 pins. &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;Connect the LCD to raspberry pi using the cable
&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;b&gt;APN SET UP: &lt;/b&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;All of you must know what APN is. It is access
point name of your operator. Since I have used an Airtel SIM, I know the APN
name. It is airtelgprs.com. If you have a different operator you, please note
the APN that we will later use for setting PPP configuration.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;b&gt;PPP Configuration and installation: &lt;/b&gt;PPP stands for point
to point protocol, which basically used for node to node communication using
serial interface in PC. We will use PPP and serial connection to access
internet in Raspberry pi.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;To install PPP software, open the terminal. Enter the
following two commands one after another.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;sudo apt-get update&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;sudo apt-get install ppp screens elink&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;After successful installation of PPP software, you need to
setup PPP peer configuration. For this we need login as root. By default, in raspberry
pi you logged in as default user pi. At least in my case I had logged in as
user pi. So, to log in as root user type the following command on the terminal
and enter.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;sudo -i&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;After logging in as root use cd command as shown below to
move peers directory.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;cd /etc/ppp/peers/&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;Now create a new file and name it anything you like and
remember the name. Use any editor you want. I have used nano editor as shown
below to create a file called airnet&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;sudo nano airnet&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;Enter the following text as shown below.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;#airtelgprs.com is the APN for Airtel connection. Note in
the above line put APN name of your operator after -T. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;connect &quot;/usr/sbin/chat -v -f /etc/chatscripts/gprs -T airtelgprs.com&quot;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;# For Raspberry Pi3 use /dev/ttyS0 as the communication
port:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;/dev/ttyS0&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;# Baudrate&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;115200&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;# Assumes that your IP address is allocated dynamically by
the ISP.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;noipdefault&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;# Try to get the name server addresses from the ISP.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;usepeerdns&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;# Use this connection as the default route to the internet.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;defaultroute&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;# Makes PPPD &quot;dial again&quot; when the connection is
lost.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;persist&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;# Do not ask the remote to authenticate.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;noauth&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;# No hardware flow control on the serial link with GSM Modem&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;nocrtscts&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;# No modem control lines with GSM Modem&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;Local&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;There are few other parameters available for setting up the
configuration and you can try those. But the above lines are sufficient for the
configuration Now save the file and close it&lt;b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;b&gt;Edit cmdline.txt file: &lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;Now use the following
command to edit the cmdline.txt in the boot directory.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;sudo nano /boot/cmdline.txt&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;Remove all reference to console in this file as shown below&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;Before Edit: dwc_otg.lpm_enable=0 console=tty1
root=PARTUUID=07312df9-02 rootfstype=ext4 elevator=deadline fsck. repair=yes
rootwait quiet splash plymouth.ignore-serial-consoles&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;After Edit:&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;dwc_otg.lpm_enable=0
root=PARTUUID=07312df9-02 rootfstype=ext4 elevator=deadline fsck.repair=yes
rootwait&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;b&gt;Edit hciuart.service file: &lt;/b&gt;Apart from changing cmdline.txt
file we need some minor change in the hciuart.service file in the /lib/system/system
folder using below command.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;Sudo nano /lib/systemd/system/hciuart.service&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;Use “#” to comment out the line having below text.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;After = dev-serial.device&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;Execstart = /usr/bin/bt-uart&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;Add the new line shown below.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;Execstart = /usr/bin/hciattach/dev/ttyS0 bcm43xx 460800
noflow-&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;Save the file and close the editor&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;b&gt;Edit config.txt file: &lt;/b&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;Open the config.txt file using any editor. I
have used the following command to edit config.txt&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;sudo nano /boot/config.txt&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;Add the following lines at the bottom of the config.txt file
and save the file&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;dtoverlay=pi3-miniuart-bt&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;enable_uart=1&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;force_tourbo=1&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;b&gt;Check Connection&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;Run ifconfig command from terminal to check connection type
available on your raspberry pi. You will find “eth”, “lo” and “wlan”. Now type
the following command on the terminal to create a new connection&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;sudo pon airnet.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;Now again run the ifconfig command on the terminal. Now you
will see a new section called PPP0 with an IP address. Your network LED will
blink quickly and continuously on your GSM module showing the connection is on.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;Now you can open your web browser in your raspberry pi 3 device
and browse websites. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;If you want to disable or close the PPP connection, use the
following command.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;sudo poff airnet&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;b&gt;Refernce:&lt;/b&gt;&amp;nbsp;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;1.&amp;nbsp;&lt;a href=&quot;https://www.instructables.com/id/Raspberry-Pi-With-a-GSM-Module/&quot;&gt;https://www.instructables.com/id/Raspberry-Pi-With-a-GSM-Module/&lt;/a&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;2.&amp;nbsp;&lt;a href=&quot;https://www.rhydolabz.com/wiki/?p=16325#:~:text=Make%20the%20connections%20as%20shown,get%20registered%20to%20the%20network.&quot;&gt;https://www.rhydolabz.com/wiki/?p=16325#:~:text=Make%20the%20connections%20as%20shown,get%20registered%20to%20the%20network.&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;form action=&quot;http://www.google.co.in/cse&quot; id=&quot;cse-search-box&quot;&gt;
  &lt;div&gt;
    &lt;input type=&quot;hidden&quot; name=&quot;cx&quot; value=&quot;partner-pub-9669148603845976:qedn6khekoj&quot; /&gt;
    &lt;input type=&quot;hidden&quot; name=&quot;ie&quot; value=&quot;ISO-8859-1&quot; /&gt;
    &lt;input type=&quot;text&quot; name=&quot;q&quot; size=&quot;50&quot; /&gt;
    &lt;input type=&quot;submit&quot; name=&quot;sa&quot; value=&quot;Search&quot; /&gt;
  &lt;/div&gt;
&lt;/form&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;http://www.google.co.in/cse/brand?form=cse-search-box&amp;amp;lang=en&quot;&gt;&lt;/script&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samalpramod.blogspot.com/feeds/2842132139028806682/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://samalpramod.blogspot.com/2020/09/working-with-gsm-module-in-raspberry-pi.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4234821960632870091/posts/default/2842132139028806682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4234821960632870091/posts/default/2842132139028806682'/><link rel='alternate' type='text/html' href='http://samalpramod.blogspot.com/2020/09/working-with-gsm-module-in-raspberry-pi.html' title='Working with GSM module in Raspberry Pi 3'/><author><name>samalpramod</name><uri>http://www.blogger.com/profile/10503328453756071691</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4234821960632870091.post-999149653018530608</id><published>2020-09-04T01:24:00.003+05:30</published><updated>2021-09-23T21:28:22.410+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="ARM"/><category scheme="http://www.blogger.com/atom/ns#" term="Compiling Shared Library in Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Cross Compile"/><category scheme="http://www.blogger.com/atom/ns#" term="Ctypes"/><category scheme="http://www.blogger.com/atom/ns#" term="Raspberry PI"/><category scheme="http://www.blogger.com/atom/ns#" term="Shared Object"/><title type='text'>Cross compiling a C project for raspberry pi</title><content type='html'>&lt;p&gt;&amp;nbsp;Developing an application for &lt;a href=&quot;https://www.raspberrypi.org/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Rapsberry &lt;/a&gt;pi can be done using
&lt;a href=&quot;python.org&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Python&lt;/a&gt;, QT or C or C++.&amp;nbsp; Only thing to
keep in mind while compiling is to cross compile the C and C++ files for &lt;a href=&quot;https://www.arm.com/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;ARM&lt;/a&gt;&amp;nbsp;architecture. For this you can change the make file and set the ARM compiler
path for compiling the files.&amp;nbsp; Problem arises
when you are developing a project in Python and want to use C code along with it.
This is not a tough task to achieve but tricky one to do so. You can call C function
from python in two ways. You can create a wrapper of the C function that you
want to use in python. &amp;nbsp;To know more
about wrappers you can visit &lt;a href=&quot;https://intermediate-and-advanced-software-carpentry.readthedocs.io/en/latest/c++-wrapping.html&quot;&gt;this&lt;/a&gt;
page or google it. Second option is to create a shared library(.so file) &amp;nbsp;and use the function with the help of &lt;a href=&quot;https://docs.python.org/3/library/ctypes.html&quot;&gt;ctypes&lt;/a&gt;. &amp;nbsp;If you have more than number of &amp;nbsp;C files and the files calls functions of other
C files, I will prefer to use ctypes after creating a shared object file. Here
I will explain how to cross compile C files to create a shared object and how
to call functions of the shared object using ctypes.&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;In my &lt;a href=&quot;https://ubuntu.com/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Ubuntu &lt;/a&gt;16.04 I had given the following command to compile
my C files to create a shared object.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;gcc - fpic -shared -o &amp;lt;Name of .so file&amp;gt; &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;&amp;lt;Name of C files with path&amp;gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;Example : I have to create a shared object library having
some math functions and string functions, the final command for creating the
shared object library will be &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;gcc – fpic – shared – o utility.so utility_main.c &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;mathUtil/mathfunc.c&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;stringUtil/stringfun.c &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;You can have all your C file separated by space&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;This will create utility.so file which can be used in my
python code using ctypes. If you want to use your python code in Raspberry pi
or any other ARM architecture device you need to cross compile the library
using the ARM cross compiler. In my case I am using Raspberry pi 3B and my
cross compiler is arm-linux-gnueabihf-gcc. So I will just change the compiler in
the above command to cross compile my application for ARM architecture. You can
use your cross compiler.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;Here is my command for cross compiling utility.so shown
above.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;arm-linux-gnueabihf-gcc &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;-fpic -shared -o utility.so utility_main.c &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;mathUtil/mathfunc.c&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;stringUtil/stringfun.c &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;Now you can copy this .so file to your python project. &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;In your python file add “import ctypes” in the
top where all import files are called. Then create object of the shared object
and call the function you want to use in your Python module&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;Example : If I have to call addNumber function my utility
shared object in my python file I have to do the following steps.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoListParagraphCxSpFirst&quot; style=&quot;mso-list: l0 level1 lfo1; text-indent: -18pt;&quot;&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=&quot;mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;&quot;&gt;&lt;span style=&quot;mso-list: Ignore;&quot;&gt;1.&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Import ctypes&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;mso-list: l0 level1 lfo1; text-indent: -18pt;&quot;&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=&quot;mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;&quot;&gt;&lt;span style=&quot;mso-list: Ignore;&quot;&gt;2.&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;obj =
ctypes.CDLL(utility.so&#39;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoListParagraphCxSpLast&quot; style=&quot;mso-list: l0 level1 lfo1; text-indent: -18pt;&quot;&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=&quot;mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;&quot;&gt;&lt;span style=&quot;mso-list: Ignore;&quot;&gt;3.&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;z =
obj.addNumber(24,35) &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;form action=&quot;http://www.google.co.in/cse&quot; id=&quot;cse-search-box&quot;&gt;
  &lt;div&gt;
    &lt;input type=&quot;hidden&quot; name=&quot;cx&quot; value=&quot;partner-pub-9669148603845976:qedn6khekoj&quot; /&gt;
    &lt;input type=&quot;hidden&quot; name=&quot;ie&quot; value=&quot;ISO-8859-1&quot; /&gt;
    &lt;input type=&quot;text&quot; name=&quot;q&quot; size=&quot;50&quot; /&gt;
    &lt;input type=&quot;submit&quot; name=&quot;sa&quot; value=&quot;Search&quot; /&gt;
  &lt;/div&gt;
&lt;/form&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;http://www.google.co.in/cse/brand?form=cse-search-box&amp;amp;lang=en&quot;&gt;&lt;/script&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samalpramod.blogspot.com/feeds/999149653018530608/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://samalpramod.blogspot.com/2020/09/cross-compiling-c-project-for-raspberry.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4234821960632870091/posts/default/999149653018530608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4234821960632870091/posts/default/999149653018530608'/><link rel='alternate' type='text/html' href='http://samalpramod.blogspot.com/2020/09/cross-compiling-c-project-for-raspberry.html' title='Cross compiling a C project for raspberry pi'/><author><name>samalpramod</name><uri>http://www.blogger.com/profile/10503328453756071691</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4234821960632870091.post-8984016087134077918</id><published>2020-07-10T19:04:00.000+05:30</published><updated>2020-07-10T21:13:44.160+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Auto start"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Service"/><category scheme="http://www.blogger.com/atom/ns#" term="Systemctl"/><title type='text'>How to run a program during start up on Linux using systemctl</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;/div&gt;
&lt;div align=&quot;center&quot; class=&quot;MsoTitle&quot; style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-size: 22.0pt;&quot;&gt;How to run a program during start up on Linux&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Use the following steps to run a program on start up or
booting on Linux machine.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;Any program
that needs to be run during start or boot is termed as service. We will use systemd
to run a service in the background during startup. &lt;b&gt;systemd&lt;/b&gt;&amp;nbsp;is a
system and service manager for Linux, also capable of replacing the
traditional&amp;nbsp;&lt;b&gt;SysV&lt;/b&gt;&amp;nbsp;init system&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoListParagraphCxSpFirst&quot; style=&quot;mso-list: l0 level1 lfo1; text-indent: -18.0pt;&quot;&gt;
&lt;!--[if !supportLists]--&gt;&lt;span style=&quot;mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;&quot;&gt;&lt;span style=&quot;mso-list: Ignore;&quot;&gt;1.&lt;span style=&quot;font: 7.0pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;To create a service run the following command&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot;&gt;
sudo nano
/etc/system/system/NAME_OF_YOUR_SERVIC.service.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;mso-list: l0 level1 lfo1; text-indent: -18.0pt;&quot;&gt;
&lt;!--[if !supportLists]--&gt;&lt;span style=&quot;mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;&quot;&gt;&lt;span style=&quot;mso-list: Ignore;&quot;&gt;2.&lt;span style=&quot;font: 7.0pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;nano
editor will open a blank file. Put the following command and save the file.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot;&gt;
Description = DESRIPTION_OF_YOUR_SERVICE //
A small description of your service here.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot;&gt;
Wants=network.target // This means the
service will start after the network is ready.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot;&gt;
[Service]&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot;&gt;
Type=simple&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot;&gt;
ExecStart=&quot;Application/script name with path&quot;&amp;nbsp; ex: /home/pramod/mybgapp.sh&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot;&gt;
Restart=on-failure&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot;&gt;
RestartSec=10&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot;&gt;
KillMode=process&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot;&gt;
[install]&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot;&gt;
WantedBy=multi-user.target&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;mso-list: l0 level1 lfo1; text-indent: -18.0pt;&quot;&gt;
&lt;!--[if !supportLists]--&gt;&lt;span style=&quot;mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;&quot;&gt;&lt;span style=&quot;mso-list: Ignore;&quot;&gt;3.&lt;span style=&quot;font: 7.0pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Once the service is created we need to reload
the service using &lt;b&gt;systemctl. &lt;/b&gt;Use the following command to reload the
service.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot;&gt;
Sudo systemctl daemon-reload&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;mso-list: l0 level1 lfo1; text-indent: -18.0pt;&quot;&gt;
&lt;!--[if !supportLists]--&gt;&lt;span style=&quot;mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;&quot;&gt;&lt;span style=&quot;mso-list: Ignore;&quot;&gt;4.&lt;span style=&quot;font: 7.0pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Use the following command to enable the service.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot;&gt;
Sudo systemctl enable YOUR_SERVICE_NAME&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;mso-list: l0 level1 lfo1; text-indent: -18.0pt;&quot;&gt;
&lt;!--[if !supportLists]--&gt;&lt;span style=&quot;mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;&quot;&gt;&lt;span style=&quot;mso-list: Ignore;&quot;&gt;5.&lt;span style=&quot;font: 7.0pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;To start the service use the following command&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot;&gt;
Sudo systemctl start YOUR_SERVICE_NAME&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;mso-list: l0 level1 lfo1; text-indent: -18.0pt;&quot;&gt;
&lt;!--[if !supportLists]--&gt;&lt;span style=&quot;mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;&quot;&gt;&lt;span style=&quot;mso-list: Ignore;&quot;&gt;6.&lt;span style=&quot;font: 7.0pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;To check if the service is running or not use
the following command.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot;&gt;
Systemctl status YOUR_SERVICE_NAME&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;mso-list: l0 level1 lfo1; text-indent: -18.0pt;&quot;&gt;
&lt;!--[if !supportLists]--&gt;&lt;span style=&quot;mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;&quot;&gt;&lt;span style=&quot;mso-list: Ignore;&quot;&gt;7.&lt;span style=&quot;font: 7.0pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Now reboot the system. Application will start
automatically else crash if failed.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoListParagraphCxSpLast&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;form action=&quot;http://www.google.co.in/cse&quot; id=&quot;cse-search-box&quot;&gt;
  &lt;div&gt;
    &lt;input type=&quot;hidden&quot; name=&quot;cx&quot; value=&quot;partner-pub-9669148603845976:qedn6khekoj&quot; /&gt;
    &lt;input type=&quot;hidden&quot; name=&quot;ie&quot; value=&quot;ISO-8859-1&quot; /&gt;
    &lt;input type=&quot;text&quot; name=&quot;q&quot; size=&quot;50&quot; /&gt;
    &lt;input type=&quot;submit&quot; name=&quot;sa&quot; value=&quot;Search&quot; /&gt;
  &lt;/div&gt;
&lt;/form&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;http://www.google.co.in/cse/brand?form=cse-search-box&amp;amp;lang=en&quot;&gt;&lt;/script&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samalpramod.blogspot.com/feeds/8984016087134077918/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://samalpramod.blogspot.com/2020/07/how-to-run-program-during-start-up-on.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4234821960632870091/posts/default/8984016087134077918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4234821960632870091/posts/default/8984016087134077918'/><link rel='alternate' type='text/html' href='http://samalpramod.blogspot.com/2020/07/how-to-run-program-during-start-up-on.html' title='How to run a program during start up on Linux using systemctl'/><author><name>samalpramod</name><uri>http://www.blogger.com/profile/10503328453756071691</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4234821960632870091.post-7697557539097237378</id><published>2018-04-08T23:29:00.001+05:30</published><updated>2018-04-08T23:29:40.458+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="JSON"/><category scheme="http://www.blogger.com/atom/ns#" term="Newtonsoft.json"/><category scheme="http://www.blogger.com/atom/ns#" term="WebService"/><title type='text'>Consuming Web Service in C#</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
&lt;h1&gt;
Introduction&lt;o:p&gt;&lt;/o:p&gt;&lt;/h1&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
RESTful web service today becomes a norm in every mobile and
web application. RESTful web services can be created by any language. Here I
will explain how to consume a web service from C# application. I have developed
a webservice using Java Springboot and mysql database. &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;Note the web service created consumes and
produces json data. The web application is hosted on a tomcat application
server which is behind https web server.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;h1&gt;
Client Component&lt;o:p&gt;&lt;/o:p&gt;&lt;/h1&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;I have developed a C#
application that will consume web service to show the data in the desktop
interface. I have used windows desktop application using Visual Studio 2017
with .Net 4.5 environment. The Desktop application list of bus routes of local
city transport. The sample response from the server seems like the one below.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigjXHnmbw0kD-KiZDHMPOYmt7vQxQeX7zyBEZUjJgkk9KqdPB610gPGTruZSG1M_UDfyte1tAkwFQDS5eEqwDP3w9pEdBFvR2MQAXW4HoDNvW90N1g-1l7KRtmTj0OkI1CE0Vdhyl2jvU/s1600/RouteList.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;290&quot; data-original-width=&quot;1002&quot; height=&quot;184&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigjXHnmbw0kD-KiZDHMPOYmt7vQxQeX7zyBEZUjJgkk9KqdPB610gPGTruZSG1M_UDfyte1tAkwFQDS5eEqwDP3w9pEdBFvR2MQAXW4HoDNvW90N1g-1l7KRtmTj0OkI1CE0Vdhyl2jvU/s640/RouteList.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
As show in the above picture the Json response have 3 major
item. One is status, which is of numeric type, other one is message which is of
string type and the last one is it self a Json object.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;We need to create a http request to the
server and the request should be done using post method as the service works
only using post method. For the particular request we need to pass a Json
object in the body having two parameters as shown in the picture below. Request
parameter will change depending upon the service requested.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBLGq-zWhEgfn88jHrHGpzefOjyr9UC4yMpPPHnPwfdRb69Ig4EhjoDvdDiY54EJqrf1tyMbhxKYPErk2XOHTyZKU1bvfuxm6HRbJrJY27_sRFZ1i96cJSOZX4Ug0I8jqtmK0js_m_DHo/s1600/RequestBody.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;153&quot; data-original-width=&quot;956&quot; height=&quot;102&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBLGq-zWhEgfn88jHrHGpzefOjyr9UC4yMpPPHnPwfdRb69Ig4EhjoDvdDiY54EJqrf1tyMbhxKYPErk2XOHTyZKU1bvfuxm6HRbJrJY27_sRFZ1i96cJSOZX4Ug0I8jqtmK0js_m_DHo/s640/RequestBody.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
There are two parameters required for this service. These
are request parameter which needs to be passed in the request body as a json
object. If you have a web service that needs to send request parameter to
server for processing remember to pass them in the body method as a Json object
if your server application expecting a Json object in the request method.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;h2&gt;
HTTP Request : &lt;o:p&gt;&lt;/o:p&gt;&lt;/h2&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
I have created a function to make a http request to the
server. The function takes four parameters as shown in the below picture,&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh09LeO-vEgA30m-RbA23YaYMcpDI4uE1ywOp_TF-NbXNoSCIWhRvbs4WDAKVTGmkEmDLyfK9AC6iYLRpitmU2PoHiHOOtAUbRITQVcKX3uacumgBwTZYfrqfXI0iY2BwFT6c8VM77u4tU/s1600/HttpRequest.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;556&quot; data-original-width=&quot;997&quot; height=&quot;355&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh09LeO-vEgA30m-RbA23YaYMcpDI4uE1ywOp_TF-NbXNoSCIWhRvbs4WDAKVTGmkEmDLyfK9AC6iYLRpitmU2PoHiHOOtAUbRITQVcKX3uacumgBwTZYfrqfXI0iY2BwFT6c8VM77u4tU/s640/HttpRequest.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;

&lt;div class=&quot;MsoNormal&quot;&gt;
First parameter is requestUrl is string type parameter that
holds the url that needs to be called for the web service. Second parameter
JSONRequest, is a Json object that holds request parameters. This is passed in
the request body. Third parameter is called JSONMethod which is string type.
The JSONmethod can be “GET”, “POST” or “DELETE” depending &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;upon the service type requested. For this
particular service type &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;the method is “POST”.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;The last parameter is&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;JSONContentType is a string type parameter
that identifies the content type of the request that is passed in the request
header. The function takes returns a JSON object as shown in the above picture.
&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;Most part of the function is self explanatory.
&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;The first line of the function is
mentioned below.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;ServicePointManager.ServerCertificateValidationCallback
= delegate { return true; }; &lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
This is required as the server uses self signed SSL certificate
and my desktop does not have the certificate. I have added this to ignore&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;SSL certificate while doing http request from
the client application. For more details you can visit &lt;a href=&quot;https://msdn.microsoft.com/en-us/library/system.net.servicepointmanager.servercertificatevalidationcallback(v=vs.110).aspx&quot;&gt;this&lt;/a&gt;
link.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Since I am using JSON object in both http request and
response, I have used Newtonsoft.json to manage the json object. It has the inbuilt
method to convert objects to josn and vice versa making life simpler for the
developer.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;color: blue; font-family: Consolas; font-size: 9.5pt; line-height: 107%; mso-bidi-font-family: Consolas;&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%; mso-bidi-font-family: Consolas;&quot;&gt; sb = JsonConvert.SerializeObject(JSONRequest); &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%; mso-bidi-font-family: Consolas;&quot;&gt;In this line the I am using
Newtonsoft.json to converts json object to String while sending request to the
server. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%; mso-bidi-font-family: Consolas;&quot;&gt;jsonObject =
JsonConvert.DeserializeObject&lt;jobject&gt;(jsonresponse);&lt;o:p&gt;&lt;/o:p&gt;&lt;/jobject&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
In the above line I am converting the &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;http response from the server while is of string
type to json object. &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;For more
information related to Newtonsoft.Json you can visit their &lt;a href=&quot;https://www.newtonsoft.com/json&quot;&gt;website&lt;/a&gt;. &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;For sample application using C# with Newtonsoft
you can check &lt;a href=&quot;https://www.c-sharpcorner.com/UploadFile/dacca2/json-serialization-using-newtonsoft-json-serialize/&quot;&gt;this&lt;/a&gt;s
link.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;form action=&quot;http://www.google.co.in/cse&quot; id=&quot;cse-search-box&quot;&gt;
  &lt;div&gt;
    &lt;input type=&quot;hidden&quot; name=&quot;cx&quot; value=&quot;partner-pub-9669148603845976:qedn6khekoj&quot; /&gt;
    &lt;input type=&quot;hidden&quot; name=&quot;ie&quot; value=&quot;ISO-8859-1&quot; /&gt;
    &lt;input type=&quot;text&quot; name=&quot;q&quot; size=&quot;50&quot; /&gt;
    &lt;input type=&quot;submit&quot; name=&quot;sa&quot; value=&quot;Search&quot; /&gt;
  &lt;/div&gt;
&lt;/form&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;http://www.google.co.in/cse/brand?form=cse-search-box&amp;amp;lang=en&quot;&gt;&lt;/script&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samalpramod.blogspot.com/feeds/7697557539097237378/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://samalpramod.blogspot.com/2018/04/consuming-web-service-in-c.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4234821960632870091/posts/default/7697557539097237378'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4234821960632870091/posts/default/7697557539097237378'/><link rel='alternate' type='text/html' href='http://samalpramod.blogspot.com/2018/04/consuming-web-service-in-c.html' title='Consuming Web Service in C#'/><author><name>samalpramod</name><uri>http://www.blogger.com/profile/10503328453756071691</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigjXHnmbw0kD-KiZDHMPOYmt7vQxQeX7zyBEZUjJgkk9KqdPB610gPGTruZSG1M_UDfyte1tAkwFQDS5eEqwDP3w9pEdBFvR2MQAXW4HoDNvW90N1g-1l7KRtmTj0OkI1CE0Vdhyl2jvU/s72-c/RouteList.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4234821960632870091.post-2223035150761689687</id><published>2017-08-26T18:30:00.000+05:30</published><updated>2017-08-26T18:30:20.011+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Hibernate"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="Spring"/><category scheme="http://www.blogger.com/atom/ns#" term="Spring MVC"/><title type='text'>nested exception is org.springframework.transaction.CannotCreateTransactionException</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
If you are java developer and using Spring and Hibernate to
develop application, you might have faced this exception sometime during the
development process. The exception gives a 500 internal server and the error
message will be something like the one mentioned below.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;background: yellow; mso-highlight: yellow;&quot;&gt;HTTP
Status 500 - Request processing failed; nested exception is
org.springframework.transaction.CannotCreateTransactionException&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
If you check the stack trace of the error you may fight the
line of the code that is responsible for the exception.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;h1&gt;
Cause:&lt;o:p&gt;&lt;/o:p&gt;&lt;/h1&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
As the exception show it was not able to perform the transaction,
means there is some issue either in the code, or in the database that is
failing the transaction. &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;h1&gt;
Solution:&lt;o:p&gt;&lt;/o:p&gt;&lt;/h1&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
So, what could be reason for the transaction failure or creation?
Check if all your transaction was getting failed for different tables on
different pages. If the answer is yes, then follow the following steps to find
out the issue.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoListParagraphCxSpFirst&quot; style=&quot;mso-list: l0 level1 lfo1; text-indent: -18.0pt;&quot;&gt;
&lt;!--[if !supportLists]--&gt;1.&lt;span style=&quot;font-size: 7pt; font-stretch: normal; font-variant-numeric: normal; line-height: normal;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;!--[endif]--&gt;Check if your database server is up and running.
If the database server is down, your application could not connect to database.
Hence transaction creation will be failed. If the database is up and still
facing the same issue follow the next step below.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;mso-list: l0 level1 lfo1; text-indent: -18.0pt;&quot;&gt;
&lt;!--[if !supportLists]--&gt;2.&lt;span style=&quot;font-size: 7pt; font-stretch: normal; font-variant-numeric: normal; line-height: normal;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;!--[endif]--&gt;Check database credential you are using to
connect to server. I mean the username, password for the database.&amp;nbsp; Make sure you have the correct and updated
database username and password. If your application was working with the
existing username and password and not working, check with your database admin
if the credential had been changed. &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoListParagraphCxSpLast&quot;&gt;
The above steps will help you to resolve the
following issue. In case if you still facing the issue comment on the post with
details. I will try to get back to you&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;form action=&quot;http://www.google.co.in/cse&quot; id=&quot;cse-search-box&quot;&gt;
  &lt;div&gt;
    &lt;input type=&quot;hidden&quot; name=&quot;cx&quot; value=&quot;partner-pub-9669148603845976:qedn6khekoj&quot; /&gt;
    &lt;input type=&quot;hidden&quot; name=&quot;ie&quot; value=&quot;ISO-8859-1&quot; /&gt;
    &lt;input type=&quot;text&quot; name=&quot;q&quot; size=&quot;50&quot; /&gt;
    &lt;input type=&quot;submit&quot; name=&quot;sa&quot; value=&quot;Search&quot; /&gt;
  &lt;/div&gt;
&lt;/form&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;http://www.google.co.in/cse/brand?form=cse-search-box&amp;amp;lang=en&quot;&gt;&lt;/script&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samalpramod.blogspot.com/feeds/2223035150761689687/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://samalpramod.blogspot.com/2017/08/nested-exception-is-orgspringframeworkt.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4234821960632870091/posts/default/2223035150761689687'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4234821960632870091/posts/default/2223035150761689687'/><link rel='alternate' type='text/html' href='http://samalpramod.blogspot.com/2017/08/nested-exception-is-orgspringframeworkt.html' title='nested exception is org.springframework.transaction.CannotCreateTransactionException'/><author><name>samalpramod</name><uri>http://www.blogger.com/profile/10503328453756071691</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total><georss:featurename>Samalkha, Pushpanjali Farms, New Delhi, Delhi 110037, India</georss:featurename><georss:point>28.5342052 77.087383999999929</georss:point><georss:box>28.527230199999998 77.077298999999925 28.5411802 77.097468999999933</georss:box></entry><entry><id>tag:blogger.com,1999:blog-4234821960632870091.post-4487336166634054177</id><published>2017-08-26T14:07:00.000+05:30</published><updated>2017-08-26T14:07:12.068+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Hibernate"/><category scheme="http://www.blogger.com/atom/ns#" term="Hibernate Exception"/><category scheme="http://www.blogger.com/atom/ns#" term="Hibernate ORM"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><title type='text'>org.hibernate.PropertyAccessException: Null value was assigned to a property of primitive type.</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Some of you might have faced the above exception and some of
you might not as the exception does not happen on normal scenario.&amp;nbsp; Therefore it is a bit tricky to resolve the
issue for the novice developers working on &lt;a href=&quot;http://hibernate.org/orm/&quot;&gt;hibernate&lt;/a&gt;.
As the error suggest assignment of Null value to primitive data type.&amp;nbsp; That means you are assigning null value to
any variable that has been declared as &lt;a href=&quot;http://cs.fit.edu/~ryan/java/language/java-data.html&quot;&gt;primitive data type&lt;/a&gt;.
&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h1&gt;
Cause:&lt;o:p&gt;&lt;/o:p&gt;&lt;/h1&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
The specific reason for the above exception depends upon the
application you are developing, but the main reason for the exception you are
assigning null value to a variable declared as primitive data type.&amp;nbsp; So, if you have a variable of boolean, char,
byte, short, int, long, float, double and assigning null value in any way.
Check the stack trace of the exception and find the exact line in the code. &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;h1&gt;
Solution:&lt;o:p&gt;&lt;/o:p&gt;&lt;/h1&gt;
&lt;div class=&quot;MsoListParagraphCxSpFirst&quot; style=&quot;mso-list: l0 level1 lfo1; text-indent: -18.0pt;&quot;&gt;
&lt;!--[if !supportLists]--&gt;1.&lt;span style=&quot;font-size: 7pt; font-stretch: normal; font-variant-numeric: normal; line-height: normal;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;!--[endif]--&gt;In the hibernate application check the setter
method of the variable for which you are getting the exception. Make sure to
check the value you are assigning is not null. In case the value is null then
assign default value.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;mso-list: l0 level1 lfo1; text-indent: -18.0pt;&quot;&gt;
&lt;!--[if !supportLists]--&gt;2.&lt;span style=&quot;font-size: 7pt; font-stretch: normal; font-variant-numeric: normal; line-height: normal;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;!--[endif]--&gt;In case your application getting values from table
of a database, check if the field in the table contains null value. Update the
table with default value for existing records. Add a default value for the
field in the table so that in case of new record, it will have a default value
rather than null, this helping the setter function to assign default value to
the variable declared in the class&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoListParagraphCxSpLast&quot; style=&quot;mso-list: l0 level1 lfo1; text-indent: -18.0pt;&quot;&gt;
&lt;!--[if !supportLists]--&gt;3.&lt;span style=&quot;font-size: 7pt; font-stretch: normal; font-variant-numeric: normal; line-height: normal;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;!--[endif]--&gt;Thirdly instead of using primitive data type,
you can use wrapper class to declare the variable for which value is being
assigned, for example you can use Integer for int or Float for float.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;form action=&quot;http://www.google.co.in/cse&quot; id=&quot;cse-search-box&quot;&gt;
  &lt;div&gt;
    &lt;input type=&quot;hidden&quot; name=&quot;cx&quot; value=&quot;partner-pub-9669148603845976:qedn6khekoj&quot; /&gt;
    &lt;input type=&quot;hidden&quot; name=&quot;ie&quot; value=&quot;ISO-8859-1&quot; /&gt;
    &lt;input type=&quot;text&quot; name=&quot;q&quot; size=&quot;50&quot; /&gt;
    &lt;input type=&quot;submit&quot; name=&quot;sa&quot; value=&quot;Search&quot; /&gt;
  &lt;/div&gt;
&lt;/form&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;http://www.google.co.in/cse/brand?form=cse-search-box&amp;amp;lang=en&quot;&gt;&lt;/script&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samalpramod.blogspot.com/feeds/4487336166634054177/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://samalpramod.blogspot.com/2017/08/orghibernatepropertyaccessexception.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4234821960632870091/posts/default/4487336166634054177'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4234821960632870091/posts/default/4487336166634054177'/><link rel='alternate' type='text/html' href='http://samalpramod.blogspot.com/2017/08/orghibernatepropertyaccessexception.html' title='org.hibernate.PropertyAccessException: Null value was assigned to a property of primitive type.'/><author><name>samalpramod</name><uri>http://www.blogger.com/profile/10503328453756071691</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total><georss:featurename>Samalkha, Pushpanjali Farms, New Delhi, Delhi 110037, India</georss:featurename><georss:point>28.5342052 77.087383999999929</georss:point><georss:box>28.527230199999998 77.077298999999925 28.5411802 77.097468999999933</georss:box></entry><entry><id>tag:blogger.com,1999:blog-4234821960632870091.post-9147932997439263870</id><published>2017-08-20T22:59:00.000+05:30</published><updated>2017-08-20T22:59:19.215+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Hibernate"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="Spring MVC"/><title type='text'>HTTP Status 404 - description The requested resource is not available in Spring MVC application</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;Arial Narrow&amp;quot;,sans-serif; font-size: 12.0pt; line-height: 107%;&quot;&gt;Those novice java developers who had been working in
spring MVC, sometimes might have faced this error while running the
application. The above error usually occurs in spring mvc application. It shows
name of a jsp page as not available which is associated with the application.
This error is bit more confusing as the jsp page itself is there in the
application.&amp;nbsp; Since the page is available
you are not sure why this exception is coming. It means there is something
wrong in the controller class. &amp;nbsp;You need
to revisit your controller class again. Please check if you have defined the
method in the RequestMapping of your controller class as shown below.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;code&gt;&lt;span style=&quot;font-family: &amp;quot;Arial Narrow&amp;quot;, sans-serif; font-size: 12pt; line-height: 107%;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/code&gt;&lt;code style=&quot;border-radius: 0px !important; bottom: auto !important; box-sizing: content-box !important; color: grey !important; float: none; font-stretch: inherit; font-variant-numeric: inherit; min-height: auto !important; outline: 0px !important; overflow: visible; right: auto;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Arial Narrow&amp;quot;,sans-serif; font-size: 12.0pt; line-height: 107%; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin;&quot;&gt;@RequestMapping&lt;span style=&quot;color: black;&quot;&gt;(value=&lt;/span&gt;&quot;/submitAdmissionForm.html&quot;&lt;span style=&quot;color: black;&quot;&gt;,method=RequestMethod.GET)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;code&gt;&lt;span style=&quot;font-family: &amp;quot;Arial Narrow&amp;quot;, sans-serif; font-size: 12pt; line-height: 107%;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;code&gt;&lt;span style=&quot;font-family: &amp;quot;Arial Narrow&amp;quot;, sans-serif; font-size: 12pt; line-height: 107%;&quot;&gt;If you think that you have
created the method and still facing the issue, then check spelling of your
method names being called from the form or the servlet.xml. There might have
been some spelling mistake that’s why you are getting the issue. A simple
spelling mistake can take hours to debug and resolve this kind of issue if you
are new to spring MVC development.&lt;/span&gt;&lt;/code&gt;&lt;span style=&quot;font-family: &amp;quot;Arial Narrow&amp;quot;,sans-serif; font-size: 12.0pt; line-height: 107%;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;form action=&quot;http://www.google.co.in/cse&quot; id=&quot;cse-search-box&quot;&gt;
  &lt;div&gt;
    &lt;input type=&quot;hidden&quot; name=&quot;cx&quot; value=&quot;partner-pub-9669148603845976:qedn6khekoj&quot; /&gt;
    &lt;input type=&quot;hidden&quot; name=&quot;ie&quot; value=&quot;ISO-8859-1&quot; /&gt;
    &lt;input type=&quot;text&quot; name=&quot;q&quot; size=&quot;50&quot; /&gt;
    &lt;input type=&quot;submit&quot; name=&quot;sa&quot; value=&quot;Search&quot; /&gt;
  &lt;/div&gt;
&lt;/form&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;http://www.google.co.in/cse/brand?form=cse-search-box&amp;amp;lang=en&quot;&gt;&lt;/script&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samalpramod.blogspot.com/feeds/9147932997439263870/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://samalpramod.blogspot.com/2017/08/http-status-404-description-requested.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4234821960632870091/posts/default/9147932997439263870'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4234821960632870091/posts/default/9147932997439263870'/><link rel='alternate' type='text/html' href='http://samalpramod.blogspot.com/2017/08/http-status-404-description-requested.html' title='HTTP Status 404 - description The requested resource is not available in Spring MVC application'/><author><name>samalpramod</name><uri>http://www.blogger.com/profile/10503328453756071691</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total><georss:featurename>Delhi, India</georss:featurename><georss:point>28.7040592 77.10249019999992</georss:point><georss:box>28.2581432 76.457043199999916 29.1499752 77.747937199999924</georss:box></entry><entry><id>tag:blogger.com,1999:blog-4234821960632870091.post-2316163405737210195</id><published>2017-08-06T17:42:00.000+05:30</published><updated>2017-08-06T17:42:07.092+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Hibernate"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="Validation"/><title type='text'>javax.validation.ConstraintViolationException: validation failed for classes</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
If you are working on Hibernate and face this kind of
exception, then don’t be surprised. The exception is self-explanatory. It says
there is a constraint violation for validation. If you check the stack trace it
can show you the class and the line of the code where the exception had been occurred.
&amp;nbsp;The most probable cause might be
validation rule applied in the model class. I am giving an example here which mostly
happen during the development. Let me say I have an user_account table having
Id. username, Password, email, account_status.&amp;nbsp;
All the fields are of String data type except the account_status which
is of small Integer type and Id is auto incremented Integer number. Suppose I
have created a model for the user_account table like the one below.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
@Entity(name=&quot;user_account&quot;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
public class userAccount {&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Id&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @GeneratedValue(strategy
= GenerationType.AUTO)&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private
Integer id;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @NotBlank(message
= &quot;Please enter your username.&quot;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private
String username;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;background: yellow; mso-highlight: yellow;&quot;&gt;@Size(min = 8, max = 15, message
= &quot;Your username must between 8 and 15 characters&quot;)&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @NotEmpty(message
= &quot;Please enter your password.&quot;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Size(min
= 8, max = 15, message = &quot;Your password must between 6 and 15
characters&quot;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private
String password;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @NotEmpty(message
= &quot;Please enter your email.&quot;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private
String email;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;background: yellow; mso-highlight: yellow;&quot;&gt;@Size(min=1, max=2)&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private
Integer account_status&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //
getter setter methods to be called below this line&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
}&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;
So in the above model class though seems to be ok, you can get exception if you
make simple mistakes. For example, you have set the password max limit to 15
and you a 15 character or less value as your password. It seems perfect till
now. But if you are hashing your password for security purpose the length might
exceed 15. Once the length of the password exceeds 15, your model will throw
the above exception as the validation set to 15. So you have to increase the
length of the password in the model&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Second one is, if you have checked the model I have set the
size of an account_status. Size validation does not work for Integer type
field. So we can have our second exception at that above point. &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
If you are using hibernate validation, make sure to read the
hibernate validation document and follow accordingly otherwise the above
exceptions will keep bothering and can take considerable development time to
debug and resolve the issue.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;form action=&quot;http://www.google.co.in/cse&quot; id=&quot;cse-search-box&quot;&gt;
  &lt;div&gt;
    &lt;input type=&quot;hidden&quot; name=&quot;cx&quot; value=&quot;partner-pub-9669148603845976:qedn6khekoj&quot; /&gt;
    &lt;input type=&quot;hidden&quot; name=&quot;ie&quot; value=&quot;ISO-8859-1&quot; /&gt;
    &lt;input type=&quot;text&quot; name=&quot;q&quot; size=&quot;50&quot; /&gt;
    &lt;input type=&quot;submit&quot; name=&quot;sa&quot; value=&quot;Search&quot; /&gt;
  &lt;/div&gt;
&lt;/form&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;http://www.google.co.in/cse/brand?form=cse-search-box&amp;amp;lang=en&quot;&gt;&lt;/script&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samalpramod.blogspot.com/feeds/2316163405737210195/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://samalpramod.blogspot.com/2017/08/javaxvalidationconstraintviolationexcep.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4234821960632870091/posts/default/2316163405737210195'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4234821960632870091/posts/default/2316163405737210195'/><link rel='alternate' type='text/html' href='http://samalpramod.blogspot.com/2017/08/javaxvalidationconstraintviolationexcep.html' title='javax.validation.ConstraintViolationException: validation failed for classes'/><author><name>samalpramod</name><uri>http://www.blogger.com/profile/10503328453756071691</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total><georss:featurename>New Delhi, Delhi, India</georss:featurename><georss:point>28.6139391 77.209021200000052</georss:point><georss:box>28.3907261 76.886297700000057 28.8371521 77.531744700000047</georss:box></entry><entry><id>tag:blogger.com,1999:blog-4234821960632870091.post-6986849092702801841</id><published>2017-08-03T23:26:00.002+05:30</published><updated>2017-08-03T23:26:27.233+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Hibernate"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="MVC"/><title type='text'>org.hibernate.exception.SQLGrammarException: could not execute query</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;Times New Roman&amp;quot;,serif; font-size: 12.0pt; line-height: 107%;&quot;&gt;Developers those who are working in Hibernate must
have come across the above exception sometimes. It is not a big issue but
certainly is a confusing one. it certainly takes your time if you are new
hibernate and not observing the exception stack trace in detail. I will explain
where you might be gone wrong to get the exception and how to debug it easily.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;Times New Roman&amp;quot;,serif; font-size: 12.0pt; line-height: 107%;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;Times New Roman&amp;quot;,serif; font-size: 12.0pt; line-height: 107%;&quot;&gt;The exception itself is self explanatory. Though the
exception says “ org.hibernate.exception.SQLGrammarException”, but it has
nothing to do with grammar. It means there is some error in the sql statement executed
by hibernate. &amp;nbsp;So where to check for the
error in the sql statement?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;Times New Roman&amp;quot;,serif; font-size: 12.0pt; line-height: 107%;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;Times New Roman&amp;quot;,serif; font-size: 12.0pt; line-height: 107%;&quot;&gt;First if you are using named query or model, please
check the entity name is correctly mentioned. The entity name should be exactly
same the table name in the database. &amp;nbsp;For
example, we declare employee in the model class as shown below&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;pre style=&quot;background: #EFF0F1; vertical-align: baseline;&quot;&gt;&lt;span class=&quot;lit&quot;&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 1pt none windowtext; color: #7d2727; font-family: &amp;quot;Times New Roman&amp;quot;, serif; font-size: 12pt; padding: 0cm;&quot;&gt;@Table&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 1pt none windowtext; color: #303336; font-family: &amp;quot;Times New Roman&amp;quot;, serif; font-size: 12pt; padding: 0cm;&quot;&gt;&lt;span style=&quot;font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit;&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 1pt none windowtext; color: #303336; font-family: &amp;quot;Times New Roman&amp;quot;, serif; font-size: 12pt; padding: 0cm;&quot;&gt;&lt;span style=&quot;font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit;&quot;&gt;name&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 1pt none windowtext; color: #303336; font-family: &amp;quot;Times New Roman&amp;quot;, serif; font-size: 12pt; padding: 0cm;&quot;&gt;&lt;span style=&quot;font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit;&quot;&gt;=&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;str&quot;&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 1pt none windowtext; color: #7d2727; font-family: &amp;quot;Times New Roman&amp;quot;, serif; font-size: 12pt; padding: 0cm;&quot;&gt;&lt;span style=&quot;font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit;&quot;&gt;&quot;employee&quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 1pt none windowtext; color: #303336; font-family: &amp;quot;Times New Roman&amp;quot;, serif; font-size: 12pt; padding: 0cm;&quot;&gt;&lt;span style=&quot;font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit;&quot;&gt;)&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;background: #EFF0F1; vertical-align: baseline;&quot;&gt;&lt;span class=&quot;pun&quot;&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 1pt none windowtext; color: #303336; font-family: &amp;quot;Times New Roman&amp;quot;, serif; font-size: 12pt; padding: 0cm;&quot;&gt;Hence we should have employee table in our database. Any spelling mistake in the table name can &lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;background: #EFF0F1; vertical-align: baseline;&quot;&gt;&lt;span class=&quot;pun&quot;&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 1pt none windowtext; color: #303336; font-family: &amp;quot;Times New Roman&amp;quot;, serif; font-size: 12pt; padding: 0cm;&quot;&gt;throw the above exception.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #393318; font-family: &amp;quot;Times New Roman&amp;quot;,serif; font-size: 12.0pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre style=&quot;background: #EFF0F1; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Times New Roman&amp;quot;,serif; font-size: 12.0pt;&quot;&gt;Secondly in the model class check if you are using correct column names. Any incorrect column name &lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;background: #EFF0F1; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Times New Roman&amp;quot;,serif; font-size: 12.0pt;&quot;&gt;could through this exception. For example @Column(name=&quot;emp_name&quot;) should match the emp_name &lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;background: #EFF0F1; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Times New Roman&amp;quot;,serif; font-size: 12.0pt;&quot;&gt;column field of the associate table. If you are using &lt;span class=&quot;tag&quot;&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 1pt none windowtext; color: #7d2727; padding: 0cm;&quot;&gt;hibernate-mapping&lt;/span&gt;&amp;nbsp; and mapping columns as shown &lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;background: #EFF0F1; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Times New Roman&amp;quot;,serif; font-size: 12.0pt;&quot;&gt;&lt;span class=&quot;tag&quot;&gt;in the below example, make sure the column name in the property &amp;nbsp;should match the column name in the &lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;background: #EFF0F1; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Times New Roman&amp;quot;,serif; font-size: 12.0pt;&quot;&gt;&lt;span class=&quot;tag&quot;&gt;table&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;background: #EFF0F1; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Times New Roman&amp;quot;,serif; font-size: 12.0pt;&quot;&gt;&lt;span class=&quot;tag&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;background: #EFF0F1; vertical-align: baseline;&quot;&gt;&lt;span class=&quot;tag&quot;&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 1pt none windowtext; color: #7d2727; font-family: &amp;quot;Times New Roman&amp;quot;, serif; font-size: 12pt; padding: 0cm;&quot;&gt;Example &lt;property span=&quot;&quot;&gt;&lt;/property&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 1pt none windowtext; color: #303336; font-family: &amp;quot;Times New Roman&amp;quot;, serif; font-size: 12pt; padding: 0cm;&quot;&gt;&lt;span style=&quot;font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;atn&quot;&gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 1pt none windowtext; color: #e64320; font-family: &amp;quot;Times New Roman&amp;quot;, serif; font-size: 12pt; padding: 0cm;&quot;&gt;&lt;span style=&quot;font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit;&quot;&gt;name&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 1pt none windowtext; color: #303336; font-family: &amp;quot;Times New Roman&amp;quot;, serif; font-size: 12pt; padding: 0cm;&quot;&gt;&lt;span style=&quot;font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit;&quot;&gt;=&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;atv&quot;&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 1pt none windowtext; color: #0f74bd; font-family: &amp;quot;Times New Roman&amp;quot;, serif; font-size: 12pt; padding: 0cm;&quot;&gt;&lt;span style=&quot;font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit;&quot;&gt;&quot;employeeName&quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 1pt none windowtext; color: #303336; font-family: &amp;quot;Times New Roman&amp;quot;, serif; font-size: 12pt; padding: 0cm;&quot;&gt;&lt;span style=&quot;font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;atn&quot;&gt;&lt;/span&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 1pt none windowtext; color: #e64320; font-family: &amp;quot;Times New Roman&amp;quot;, serif; font-size: 12pt; padding: 0cm;&quot;&gt;&lt;span style=&quot;font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit;&quot;&gt;column&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 1pt none windowtext; color: #303336; font-family: &amp;quot;Times New Roman&amp;quot;, serif; font-size: 12pt; padding: 0cm;&quot;&gt;&lt;span style=&quot;font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit;&quot;&gt;=&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;atv&quot;&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 1pt none windowtext; color: #0f74bd; font-family: &amp;quot;Times New Roman&amp;quot;, serif; font-size: 12pt; padding: 0cm;&quot;&gt;&lt;span style=&quot;font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit;&quot;&gt;&quot;emp_name&quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 1pt none windowtext; color: #7d2727; font-family: &amp;quot;Times New Roman&amp;quot;, serif; font-size: 12pt; padding: 0cm;&quot;&gt;&lt;span style=&quot;font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;background: #EFF0F1; vertical-align: baseline;&quot;&gt;&lt;span class=&quot;tag&quot;&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 1pt none windowtext; color: #7d2727; font-family: &amp;quot;Times New Roman&amp;quot;, serif; font-size: 12pt; padding: 0cm;&quot;&gt;So the column name in the table should be emp_name. Any spelling mistake in the column name can &lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;background: #EFF0F1; vertical-align: baseline;&quot;&gt;&lt;span class=&quot;tag&quot;&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 1pt none windowtext; color: #7d2727; font-family: &amp;quot;Times New Roman&amp;quot;, serif; font-size: 12pt; padding: 0cm;&quot;&gt;through the above section. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;background: #EFF0F1; vertical-align: baseline;&quot;&gt;&lt;span class=&quot;tag&quot;&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 1pt none windowtext; color: #7d2727; font-family: &amp;quot;Times New Roman&amp;quot;, serif; font-size: 12pt; padding: 0cm;&quot;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;pre style=&quot;background: #EFF0F1; vertical-align: baseline;&quot;&gt;&lt;span class=&quot;tag&quot;&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 1pt none windowtext; color: #7d2727; font-family: &amp;quot;Times New Roman&amp;quot;, serif; font-size: 12pt; padding: 0cm;&quot;&gt;Hope this helps. Any more information and suggestion will be welcomed.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #393318; font-family: &amp;quot;Times New Roman&amp;quot;,serif; font-size: 12.0pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;form action=&quot;http://www.google.co.in/cse&quot; id=&quot;cse-search-box&quot;&gt;
  &lt;div&gt;
    &lt;input type=&quot;hidden&quot; name=&quot;cx&quot; value=&quot;partner-pub-9669148603845976:qedn6khekoj&quot; /&gt;
    &lt;input type=&quot;hidden&quot; name=&quot;ie&quot; value=&quot;ISO-8859-1&quot; /&gt;
    &lt;input type=&quot;text&quot; name=&quot;q&quot; size=&quot;50&quot; /&gt;
    &lt;input type=&quot;submit&quot; name=&quot;sa&quot; value=&quot;Search&quot; /&gt;
  &lt;/div&gt;
&lt;/form&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;http://www.google.co.in/cse/brand?form=cse-search-box&amp;amp;lang=en&quot;&gt;&lt;/script&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samalpramod.blogspot.com/feeds/6986849092702801841/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://samalpramod.blogspot.com/2017/08/orghibernateexceptionsqlgrammarexceptio.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4234821960632870091/posts/default/6986849092702801841'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4234821960632870091/posts/default/6986849092702801841'/><link rel='alternate' type='text/html' href='http://samalpramod.blogspot.com/2017/08/orghibernateexceptionsqlgrammarexceptio.html' title='org.hibernate.exception.SQLGrammarException: could not execute query'/><author><name>samalpramod</name><uri>http://www.blogger.com/profile/10503328453756071691</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total><georss:featurename>Delhi, India</georss:featurename><georss:point>28.7040592 77.10249019999992</georss:point><georss:box>28.2581432 76.457043199999916 29.1499752 77.747937199999924</georss:box></entry><entry><id>tag:blogger.com,1999:blog-4234821960632870091.post-6464690147000462097</id><published>2017-08-02T23:07:00.001+05:30</published><updated>2017-08-09T17:54:20.113+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Hibernate"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="JPA"/><category scheme="http://www.blogger.com/atom/ns#" term="Spring"/><title type='text'>org.hibernate.MappingException: Unknown entity</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;background: white; font-family: &amp;quot;arial narrow&amp;quot; , sans-serif; font-size: 12pt; line-height: 107%;&quot;&gt;Developers working in
Hibernate must have come across the above error some point of their life, particularly
those working initially. I am not saying everybody faces the above issue, but
sometimes most of the beginner come across the issue.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;background: white; font-family: &amp;quot;arial narrow&amp;quot; , sans-serif; font-size: 12pt; line-height: 107%;&quot;&gt;If you check the stack
trace,&amp;nbsp; you will see the message “org.hibernate.MappingException:
Unknown entity:” followed by a model name. In the stack trace you can see list
of exception somewhat like the one mentioned below. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial narrow&amp;quot; , sans-serif; font-size: 12.0pt; line-height: 107%;&quot;&gt;at &lt;span style=&quot;background: yellow; mso-highlight: yellow;&quot;&gt;org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:679)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;background: yellow; font-family: &amp;quot;arial narrow&amp;quot; , sans-serif; font-size: 12.0pt; line-height: 107%;&quot;&gt;at
org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;background: yellow; font-family: &amp;quot;arial narrow&amp;quot; , sans-serif; font-size: 12.0pt; line-height: 107%;&quot;&gt;at
org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:411)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;background: yellow; font-family: &amp;quot;arial narrow&amp;quot; , sans-serif; font-size: 12.0pt; line-height: 107%;&quot;&gt;at
org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;background: yellow; font-family: &amp;quot;arial narrow&amp;quot; , sans-serif; font-size: 12.0pt; line-height: 107%;&quot;&gt;at
org.springframework.orm.hibernate3.HibernateTemplate.delete(HibernateTemplate.java:837)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;background: yellow; font-family: &amp;quot;arial narrow&amp;quot; , sans-serif; font-size: 12.0pt; line-height: 107%;&quot;&gt;at
org.springframework.orm.hibernate3.HibernateTemplate.delete(HibernateTemplate.java:833)&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;arial narrow&amp;quot; , sans-serif; font-size: 12.0pt; line-height: 107%;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;background: yellow; font-family: &amp;quot;arial narrow&amp;quot; , sans-serif; font-size: 12.0pt; line-height: 107%;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;background: white; font-family: &amp;quot;arial narrow&amp;quot; , sans-serif; font-size: 12pt; line-height: 107%;&quot;&gt;I have just mentioned
few lines of the exception shown in the stack trace as putting whole stack
trace will take a lot of space which is not required. The error is bit
confusing and takes a few minutes to few hours depending upon the experience of
the developer. The reason for the exception is how ever quite simple and taking
a little care will resolve the issue.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;background: white; font-family: &amp;quot;arial narrow&amp;quot; , sans-serif; font-size: 12pt; line-height: 107%;&quot;&gt;I found two issues for
the above exception which I mentioned below&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoListParagraphCxSpFirst&quot; style=&quot;mso-list: l0 level1 lfo1; text-indent: -18.0pt;&quot;&gt;
&lt;!--[if !supportLists]--&gt;&lt;span style=&quot;font-family: &amp;quot;arial narrow&amp;quot; , sans-serif; font-size: 12pt; line-height: 107%;&quot;&gt;1.&lt;span style=&quot;font-family: &amp;quot;times new roman&amp;quot;; font-size: 7pt; font-stretch: normal; line-height: normal;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=&quot;background: white; font-family: &amp;quot;arial narrow&amp;quot; , sans-serif; font-size: 12pt; line-height: 107%;&quot;&gt;As you know
both hibernate and JPA has&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;arial narrow&amp;quot; , sans-serif; font-size: 12pt; line-height: 107%;&quot;&gt;@Entity&lt;/span&gt;&lt;span style=&quot;background: white; font-family: &amp;quot;arial narrow&amp;quot; , sans-serif; font-size: 12pt; line-height: 107%;&quot;&gt;&amp;nbsp;annotation. Eclipse
was automatically importing&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;arial narrow&amp;quot; , sans-serif; font-size: 12pt; line-height: 107%;&quot;&gt;org.hibernate.annotations.Entity&lt;/span&gt;&lt;span style=&quot;background: white; font-family: &amp;quot;arial narrow&amp;quot; , sans-serif; font-size: 12pt; line-height: 107%;&quot;&gt;&amp;nbsp;instead of&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;arial narrow&amp;quot; , sans-serif; font-size: 12pt; line-height: 107%;&quot;&gt;javax.persistence.Entity&lt;/span&gt;&lt;span style=&quot;background: white; font-family: &amp;quot;arial narrow&amp;quot; , sans-serif; font-size: 12pt; line-height: 107%;&quot;&gt;&amp;nbsp;annotation,
or you might by mistake used the hibernate.annotation.Entity instead of Javax.persistent.entity in your model class.
So make the changes to your model class, recompile the code and try to run the code now. It will solve the issue in case you have made the above mistake else follow the next instruction.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background: white; font-family: &amp;quot;arial narrow&amp;quot; , sans-serif; font-size: 12pt; line-height: 107%;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;mso-list: l0 level1 lfo1; text-indent: -18.0pt;&quot;&gt;
&lt;!--[if !supportLists]--&gt;&lt;span style=&quot;font-family: &amp;quot;arial narrow&amp;quot; , sans-serif; font-size: 12pt; line-height: 107%;&quot;&gt;2.&lt;span style=&quot;font-family: &amp;quot;times new roman&amp;quot;; font-size: 7pt; font-stretch: normal; line-height: normal;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=&quot;background: white; font-family: &amp;quot;arial narrow&amp;quot; , sans-serif; font-size: 12pt; line-height: 107%;&quot;&gt;If you have
imported javax.persistent,entity in your class and still facing the above issue
then it is time to visit your application’s &amp;nbsp;servlet.xml file. &amp;nbsp;Check you bean for sessionFactory. Check property
named annotatedClasses and see in the value section if you have mentioned the
model name correctly. If you don’t have the model name here then add it or if
you have misspelled it, the correct the name of the model. Save the changes and
compile and run the application. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot;&gt;
&lt;span style=&quot;background: white; font-family: &amp;quot;arial narrow&amp;quot; , sans-serif; font-size: 12pt; line-height: 107%;&quot;&gt;In my
case I have used and hibernate 4.1 and spring 3.6 and came across the above
exception when by mistake I have missed to add the model class in the
annotatedClasses property file of my servlet.xml&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;MsoListParagraphCxSpLast&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;form action=&quot;http://www.google.co.in/cse&quot; id=&quot;cse-search-box&quot;&gt;
  &lt;div&gt;
    &lt;input type=&quot;hidden&quot; name=&quot;cx&quot; value=&quot;partner-pub-9669148603845976:qedn6khekoj&quot; /&gt;
    &lt;input type=&quot;hidden&quot; name=&quot;ie&quot; value=&quot;ISO-8859-1&quot; /&gt;
    &lt;input type=&quot;text&quot; name=&quot;q&quot; size=&quot;50&quot; /&gt;
    &lt;input type=&quot;submit&quot; name=&quot;sa&quot; value=&quot;Search&quot; /&gt;
  &lt;/div&gt;
&lt;/form&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;http://www.google.co.in/cse/brand?form=cse-search-box&amp;amp;lang=en&quot;&gt;&lt;/script&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samalpramod.blogspot.com/feeds/6464690147000462097/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://samalpramod.blogspot.com/2017/08/orghibernatemappingexception-unknown.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4234821960632870091/posts/default/6464690147000462097'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4234821960632870091/posts/default/6464690147000462097'/><link rel='alternate' type='text/html' href='http://samalpramod.blogspot.com/2017/08/orghibernatemappingexception-unknown.html' title='org.hibernate.MappingException: Unknown entity'/><author><name>samalpramod</name><uri>http://www.blogger.com/profile/10503328453756071691</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4234821960632870091.post-6858990965619370550</id><published>2017-02-26T21:31:00.000+05:30</published><updated>2017-02-26T21:31:03.005+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="R"/><title type='text'>Getting Started with R Language</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;&quot;&gt;
&lt;span style=&quot;font-size: 14.0pt; mso-bidi-font-size: 11.0pt;&quot;&gt;R is an open source powerful statistical
programming language. It was modeled after S language which was developed in
1980 in AT&amp;amp;T laboratory. R language has a website named &lt;/span&gt;&lt;a href=&quot;http://www.r-project.org/&quot;&gt;&lt;span style=&quot;font-size: 14.0pt; mso-bidi-font-size: 11.0pt;&quot;&gt;www.r-project.org&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-size: 14.0pt; mso-bidi-font-size: 11.0pt;&quot;&gt;.&amp;nbsp; Any one wants to start
learning R can find all the resources here. R language is available in all
three major OS like Windows. Linux and Mac.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;&quot;&gt;
&lt;span style=&quot;font-size: 14.0pt; mso-bidi-font-size: 11.0pt;&quot;&gt;&amp;nbsp;The
Comprehensive R Archive Network (CRAN) website &lt;/span&gt;&lt;span style=&quot;font-size: 14.0pt;&quot;&gt;&lt;a href=&quot;https://cran.r-project.org/&quot;&gt;&lt;span style=&quot;color: windowtext; text-decoration: none; text-underline: none;&quot;&gt;https://cran.r-project.org&lt;/span&gt;&lt;/a&gt;
is a network of websites for R language across world.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;&quot;&gt;
&lt;span style=&quot;font-size: 14.0pt; mso-bidi-font-size: 11.0pt;&quot;&gt;MSI installer can be downloaded for both
32-bit and 64 bit version of windows.&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;&quot;&gt;
&lt;span style=&quot;font-size: 14.0pt; mso-bidi-font-size: 11.0pt;&quot;&gt;&amp;nbsp;The
file with a name like R-3.3.2-win32.msi or R-3.3.2-win64.msi can be
double-clicked to install on your desktop. The size of R-3.3.2 is of around
71MB and R Studio is of 85MB. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;&quot;&gt;
&lt;span style=&quot;font-size: 14.0pt; mso-bidi-font-size: 11.0pt;&quot;&gt;&amp;nbsp;R
language had many built in features that helps in data analysis and resolve
many statistical data problem.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;&quot;&gt;
&lt;span style=&quot;font-size: 14.0pt; mso-bidi-font-size: 11.0pt;&quot;&gt;You can start learning R using R studio.&amp;nbsp; The command can be written on R command prompt
and result can be shown below.&amp;nbsp; Using
help()&amp;nbsp; command on R command prompt you
can get help on any topic on R. Note R command are case sensitive like Java.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;&quot;&gt;
&lt;span style=&quot;font-size: 14.0pt; mso-bidi-font-size: 11.0pt;&quot;&gt;R comes with lots of built in packages.&amp;nbsp; Developers can also download different
packages from CRAN website in case the packages are not available. To install
any package on window just run the following command from R command prompt. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;&quot;&gt;
&lt;span style=&quot;font-size: 14.0pt; mso-bidi-font-size: 11.0pt;&quot;&gt;&amp;gt;Install.packages(“packagename”);&amp;nbsp; Ex : install.packages(&quot;car&quot;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;&quot;&gt;
&lt;span style=&quot;font-size: 14.0pt; mso-bidi-font-size: 11.0pt;&quot;&gt;Remember you need to have admin rights for
installing packages.&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;&quot;&gt;
&lt;span style=&quot;font-size: 14.0pt; mso-bidi-font-size: 11.0pt;&quot;&gt;To load library to your workspace use library
command as shown below.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;&quot;&gt;
&lt;span style=&quot;font-size: 14.0pt; mso-bidi-font-size: 11.0pt;&quot;&gt;Library(“packagename”); Ex - library(“car”)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;&quot;&gt;
&lt;span style=&quot;font-size: 14.0pt; mso-bidi-font-size: 11.0pt;&quot;&gt;To know your working directory use the
getwd() command from R command prompt. Similarly you can set your working
directory to some other directory by using setwd() command.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;&quot;&gt;
&lt;span style=&quot;font-size: 14.0pt; mso-bidi-font-size: 11.0pt;&quot;&gt;With the above basic info one get ready to
learn R language. I will give some more information about vectors in my next
blog.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;&quot;&gt;



























































&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;form action=&quot;http://www.google.co.in/cse&quot; id=&quot;cse-search-box&quot;&gt;
  &lt;div&gt;
    &lt;input type=&quot;hidden&quot; name=&quot;cx&quot; value=&quot;partner-pub-9669148603845976:qedn6khekoj&quot; /&gt;
    &lt;input type=&quot;hidden&quot; name=&quot;ie&quot; value=&quot;ISO-8859-1&quot; /&gt;
    &lt;input type=&quot;text&quot; name=&quot;q&quot; size=&quot;50&quot; /&gt;
    &lt;input type=&quot;submit&quot; name=&quot;sa&quot; value=&quot;Search&quot; /&gt;
  &lt;/div&gt;
&lt;/form&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;http://www.google.co.in/cse/brand?form=cse-search-box&amp;amp;lang=en&quot;&gt;&lt;/script&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samalpramod.blogspot.com/feeds/6858990965619370550/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://samalpramod.blogspot.com/2017/02/getting-started-with-r-language.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4234821960632870091/posts/default/6858990965619370550'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4234821960632870091/posts/default/6858990965619370550'/><link rel='alternate' type='text/html' href='http://samalpramod.blogspot.com/2017/02/getting-started-with-r-language.html' title='Getting Started with R Language'/><author><name>samalpramod</name><uri>http://www.blogger.com/profile/10503328453756071691</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total><georss:featurename>New Delhi, Delhi, India</georss:featurename><georss:point>28.6139391 77.209021200000052</georss:point><georss:box>28.3907261 76.886297700000057 28.8371521 77.531744700000047</georss:box></entry><entry><id>tag:blogger.com,1999:blog-4234821960632870091.post-5456992456546563597</id><published>2017-01-28T18:15:00.000+05:30</published><updated>2017-02-05T23:33:35.381+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="AngularJS."/><title type='text'>AngularJS Directives</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
In my earlier blog I had explained the basics of AngularJS.
Now onwards I will explain some of the components of of AngularJS are
Directives, Scope, Controller, Data binding, Filters, Services and templates,
Modules, Expressions, Dependency Injection, Modules, Providers and
Factories.&amp;nbsp; In today’s post I will
explain what is directive and and different types of directive and it’s usage.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Directive: Directive is a class that is decorated with
@Directive. Directives helps AngularJS to extend HTML.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
AngularJS has a set of built-in directives which offers
functionality to angular applications like ng-app, &lt;a href=&quot;https://docs.angularjs.org/api/ng/directive/ngModel&quot;&gt;ng-model&lt;/a&gt;,
ng-bind. There are three type of built in directives in AngularJS. They are
component, structural directive and attribute directive.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Component: A component is a directive with added template
feature.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span class=&quot;Heading2Char&quot;&gt;&lt;span style=&quot;font-size: 13.0pt; line-height: 107%;&quot;&gt;Structural Directive :&lt;/span&gt;&lt;/span&gt; &amp;nbsp;Structural directives change the DOM layout by
adding and removing DOM elements. ngIf, ngSwitch and ngFor are some of the
structural directives.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;h2&gt;
Example of structural directive&lt;o:p&gt;&lt;/o:p&gt;&lt;/h2&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Structural Directive : &lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh52-BdtHx0T8_9RlR5yfZ8tnwQS4CcgSQxLISE8av5SaxC9vtwbPBXJ6nJl9zrwJEzsKRkXBfkvjvbvKMrme-kpFis1CFwANQREtmA5gLHRhF-EVJAG3kg9uTDxY47XP3wPb-slZx6gNs/s1600/StructuralDirective.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;126&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh52-BdtHx0T8_9RlR5yfZ8tnwQS4CcgSQxLISE8av5SaxC9vtwbPBXJ6nJl9zrwJEzsKRkXBfkvjvbvKMrme-kpFis1CFwANQREtmA5gLHRhF-EVJAG3kg9uTDxY47XP3wPb-slZx6gNs/s400/StructuralDirective.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
So the above statement will be displayed when the ngIf
condition will be true else it will not be visible.&amp;nbsp; Developer can also put a new statement to be
displayed for the false statement. Since the structure of the DOM layout
getting changed on run time on condition basis it is called structural
directives. More about structural directives can be learn from various
tutorials provided on &lt;a href=&quot;https://docs.angularjs.org/guide/directive&quot;&gt;Angular
web site&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span class=&quot;Heading2Char&quot;&gt;&lt;span style=&quot;font-size: 13.0pt; line-height: 107%;&quot;&gt;Attribute Directive:&lt;/span&gt;&lt;/span&gt; The Attribute directive
changes the appearance or behavior of an element. For example how an element
will look or behave in a HTML. NgStyle is example of attributive directives.
The NgStyle directive can be better used to set many inline styles at one go.&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Example of attribute directive : &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&amp;nbsp; &lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaBB3T0jz7gCanwxY3YhuyV28Ni2ZisVk2w3YyIBMKJFDuO-LYURsZsGQqamTWEfwHXQGPm3zMh4bO0S1JweH1L_PliDBaY8rbv34jHz2g5yAgeuIgqL6D4w-5cXAnv9gKLFnqsVWzXtQ/s1600/AttributeDirective.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;126&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaBB3T0jz7gCanwxY3YhuyV28Ni2ZisVk2w3YyIBMKJFDuO-LYURsZsGQqamTWEfwHXQGPm3zMh4bO0S1JweH1L_PliDBaY8rbv34jHz2g5yAgeuIgqL6D4w-5cXAnv9gKLFnqsVWzXtQ/s400/AttributeDirective.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Here we have used ng-style directive to the &lt;br /&gt;
&lt;div&gt;
element. Hence all the text will be printed in blue with in the div tag whether
they satisfies the condition or not. To know more about &lt;a href=&quot;https://docs.angularjs.org/api/ng/directive/ngStyle&quot;&gt;ng-style&lt;/a&gt; you can
check &lt;a href=&quot;https://docs.angularjs.org/&quot;&gt;documentation&lt;/a&gt; angular official
site. Some of the major directives in AngularJS are listed below.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span class=&quot;Heading3Char&quot;&gt;&lt;span style=&quot;font-size: 12.0pt; line-height: 107%;&quot;&gt;Ng-App&lt;/span&gt;&lt;/span&gt; – This directive tells AngularJS the
root element in an AngularJS application. There is only one ng-app directive in
a HTML document and it is always placed in the root element of a HTML document
like in the &lt;body&gt;,&lt;html&gt; or &lt;div&gt;
 tag. For more information
you can google or check angular documentation for &lt;a href=&quot;https://docs.angularjs.org/api/ng/directive/ngApp&quot;&gt;ng-app&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;/html&gt;&lt;/body&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span class=&quot;Heading3Char&quot;&gt;&lt;span style=&quot;font-size: 12.0pt; line-height: 107%;&quot;&gt;Ng-Model&lt;/span&gt;&lt;/span&gt; – The basic uses of this directive is
to bind the value of an input field in HTML, like (input, select, textarea) to application
data. ngModle responsible for binding view to model.&amp;nbsp; More information regarding ng-Model can be
found in &lt;span class=&quot;MsoHyperlink&quot;&gt;ng-&lt;a href=&quot;https://docs.angularjs.org/api/ng/directive/ngModel&quot;&gt;model&lt;/a&gt;&lt;/span&gt;
documentation&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span class=&quot;Heading3Char&quot;&gt;&lt;span style=&quot;font-size: 12.0pt; line-height: 107%;&quot;&gt;Ng-Controller&lt;/span&gt;&lt;/span&gt; – This directive controls data of
the AngularJS application. In other words ng-controller directive attaches a
controller class to view. This helps Angular to implement MVC or MVW design
pattern. For more information you can visit Angular documentation on &lt;a href=&quot;https://docs.angularjs.org/api/ng/directive/ngController&quot;&gt;ng-controller&lt;/a&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span class=&quot;Heading3Char&quot;&gt;&lt;span style=&quot;font-size: 12.0pt; line-height: 107%;&quot;&gt;Ng-Bind&lt;/span&gt;&lt;/span&gt; – The directive helps to bind the
innerHTML of the element to a specified property of data model. We can say
ng-Bind replaces text or information of a HTML element to which a property of
model is bind using the ng-bind directive. Expression which is recognized by
double curly brace “{{}}” can be used instead of ng-Bind to display of contents
of a model. ng-bind and expression used to do the same thing with little
difference.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span class=&quot;Heading3Char&quot;&gt;&lt;span style=&quot;font-size: 12.0pt; line-height: 107%;&quot;&gt;Ng-Repeat &lt;/span&gt;&lt;/span&gt;– As the name suggest the ng-Repeat
directive repeats a set of HTML elements using iteration. It works the same way
like a for loop. For iteration the collection must be an array or an object.
For detail information on &lt;a href=&quot;https://docs.angularjs.org/api/ng/directive/ngRepeat&quot;&gt;ng-repeat&lt;/a&gt; check
Angular documentation&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span class=&quot;Heading3Char&quot;&gt;&lt;span style=&quot;font-size: 12.0pt; line-height: 107%;&quot;&gt;Ng-Hide&lt;/span&gt;&lt;/span&gt; – The directive hides an HTML element
if the expression is true provided in ngHide attribute. The element is
displayed if the ng-hide expression is false. For more informat. Also ngHide is
a predefined CSS class and default element of display is set to none and
!important. For more information visit angular document on &lt;a href=&quot;https://docs.angularjs.org/api/ng/directive/ngHide&quot;&gt;ng-hide&lt;/a&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span class=&quot;Heading3Char&quot;&gt;&lt;span style=&quot;font-size: 12.0pt; line-height: 107%;&quot;&gt;Ng-Show&lt;/span&gt;&lt;/span&gt; – This directive works the same way as
ng-hide. The only difference is it shows the element when the expression is
true and hide when the expression is false. &amp;nbsp;Check AngularJS document for further
information on &lt;a href=&quot;https://docs.angularjs.org/api/ng/directive/ngShow&quot;&gt;ng-show&lt;/a&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span class=&quot;Heading3Char&quot;&gt;&lt;span style=&quot;font-size: 12.0pt; line-height: 107%;&quot;&gt;Ng-Click&lt;/span&gt;&lt;/span&gt; – This shows behavior of an element
when the element is clicked or the other way ng-click directs AngularJS to do
something when clicked.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span class=&quot;Heading3Char&quot;&gt;&lt;span style=&quot;font-size: 12.0pt; line-height: 107%;&quot;&gt;Ng-Submit&lt;/span&gt;&lt;/span&gt; – When ng-click can be linked to
buttons without a form, ng-submit always executes a function when a form is
submitted. Means action ng-submit is always related to a form. For more
information on ng-&lt;a href=&quot;https://docs.angularjs.org/api/ng/directive/ngSubmit&quot;&gt;Submit&lt;/a&gt;
and &lt;a href=&quot;https://docs.angularjs.org/api/ng/directive/ngClick&quot;&gt;ng-Click&lt;/a&gt;
you can visit the angular document section of their website.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Example: Though there are lots of examples available on net
a lot of sites dedicated to AngularJS, I am putting a sample html page with
some of the directives just discussed above to have an idea how these
directives work.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2cROAK3_6wLwya-KoQXeHV5uinmZhvQoPgRqTlKtHJbTAiXTznvz35WUzzBWzqrskbBQd6tV_Jj84tiLGnINwHKI9oJh6d6WSypEGZpnjPgu2b1I0V6mEtU588YGMw8p7P_nL3u1I6F8/s1600/Angularjs1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2cROAK3_6wLwya-KoQXeHV5uinmZhvQoPgRqTlKtHJbTAiXTznvz35WUzzBWzqrskbBQd6tV_Jj84tiLGnINwHKI9oJh6d6WSypEGZpnjPgu2b1I0V6mEtU588YGMw8p7P_nL3u1I6F8/s640/Angularjs1.png&quot; width=&quot;419&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitbCpYLic696-OBjW5NiGSC_yJvr_7QTbVjZjnY3QySfXD6jiZh0G_iqOK0sClB1vqXtJghNLRUcv5KuThUw0yjGAwlv_adYg5Rb-MSInirX65arAbZaCE4CJv1gsa-asggz2aGXSwBI4/s1600/Angularjs2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitbCpYLic696-OBjW5NiGSC_yJvr_7QTbVjZjnY3QySfXD6jiZh0G_iqOK0sClB1vqXtJghNLRUcv5KuThUw0yjGAwlv_adYg5Rb-MSInirX65arAbZaCE4CJv1gsa-asggz2aGXSwBI4/s640/Angularjs2.png&quot; width=&quot;460&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiR3f52Wvlp2XjLtaas4fNJFKKMclqVd-ieBtWzL68DZwMwkhwEfin-427cfP-6lCQuBuSzNGqEwlOV_-sS7YkLZO1t3w9E3gZuJe1SsOVN0sOihWsGCy7sT0kIsStnZNZi0AmkyvEeYIw/s1600/Angularjs3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiR3f52Wvlp2XjLtaas4fNJFKKMclqVd-ieBtWzL68DZwMwkhwEfin-427cfP-6lCQuBuSzNGqEwlOV_-sS7YkLZO1t3w9E3gZuJe1SsOVN0sOihWsGCy7sT0kIsStnZNZi0AmkyvEeYIw/s640/Angularjs3.png&quot; width=&quot;460&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;form action=&quot;http://www.google.co.in/cse&quot; id=&quot;cse-search-box&quot;&gt;
  &lt;div&gt;
    &lt;input type=&quot;hidden&quot; name=&quot;cx&quot; value=&quot;partner-pub-9669148603845976:qedn6khekoj&quot; /&gt;
    &lt;input type=&quot;hidden&quot; name=&quot;ie&quot; value=&quot;ISO-8859-1&quot; /&gt;
    &lt;input type=&quot;text&quot; name=&quot;q&quot; size=&quot;50&quot; /&gt;
    &lt;input type=&quot;submit&quot; name=&quot;sa&quot; value=&quot;Search&quot; /&gt;
  &lt;/div&gt;
&lt;/form&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;http://www.google.co.in/cse/brand?form=cse-search-box&amp;amp;lang=en&quot;&gt;&lt;/script&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samalpramod.blogspot.com/feeds/5456992456546563597/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://samalpramod.blogspot.com/2017/01/angularjs-directives.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4234821960632870091/posts/default/5456992456546563597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4234821960632870091/posts/default/5456992456546563597'/><link rel='alternate' type='text/html' href='http://samalpramod.blogspot.com/2017/01/angularjs-directives.html' title='AngularJS Directives'/><author><name>samalpramod</name><uri>http://www.blogger.com/profile/10503328453756071691</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh52-BdtHx0T8_9RlR5yfZ8tnwQS4CcgSQxLISE8av5SaxC9vtwbPBXJ6nJl9zrwJEzsKRkXBfkvjvbvKMrme-kpFis1CFwANQREtmA5gLHRhF-EVJAG3kg9uTDxY47XP3wPb-slZx6gNs/s72-c/StructuralDirective.png" height="72" width="72"/><thr:total>0</thr:total><georss:featurename>Delhi, India</georss:featurename><georss:point>28.7040592 77.10249019999992</georss:point><georss:box>28.2581432 76.457043199999916 29.1499752 77.747937199999924</georss:box></entry><entry><id>tag:blogger.com,1999:blog-4234821960632870091.post-6956470913000213454</id><published>2017-01-22T15:55:00.000+05:30</published><updated>2017-01-28T18:17:05.399+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="AngularJS."/><title type='text'>AngularJS Overview</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
AngularJS is a free open source&amp;nbsp; java script framework mainly used for
developing dynamic web application, mainly single page application
development(SPA).&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span class=&quot;Heading2Char&quot;&gt;&lt;span style=&quot;font-size: 13.0pt; line-height: 107%;&quot;&gt;Little History&lt;/span&gt;&lt;/span&gt;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&amp;nbsp;Angular was first
developed by Misko Hevery&amp;nbsp; a Google
employee in the year 2009. AngularJS 1.0 officially release in the year 2012.
Current stable version of AngularJS 1 is AngularJs 1.6.1. Now it is officially
maintained by Google by a community of developers. &amp;nbsp;AngularJs 2.0 later released in late 2016.
AngularJS 2.0 is very different from AngularJS 1.0. Details about different
releases and versions can be found at &lt;a href=&quot;https://angularjs.org/&quot;&gt;Angular
website&lt;/a&gt; or a little search on Google&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;h2&gt;
Difference between AngularJS 1.0 and AngularJS 2.0.&lt;o:p&gt;&lt;/o:p&gt;&lt;/h2&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
So far as functionality concerned AngularJs 1.0 &amp;nbsp;was primarily designed for frontend web
development, AngularJS 2.0 was extended to cross platform mobile application
development . Some of the&amp;nbsp; major
difference are.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
AngularJS framework support’s client side development using
MVC(Model view controller) and (MVVM) Model View View Model architecture.
That’s why it is also called to support Model View Whatever(MVW) architecture.
AngularJS 1.0 does not support mobile application development.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
AngularJS 2.0 Supports many language for development like
ES5, ES6 (ECMA Script 5 and 6), TypeScript of Microsoft and Dart, While
AngularJS 1.0 supports only ES5, ES6 and Dart.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Setup for AngularJS 1.0 is very easy while the setup for
AngularJS 2.0 is complex. On developer point of view there are many differences
which I can put in a different post later. But one of the major difference is,
if you are AngularJS 1.0 developer and used to $scope and controller then you
have to forget the two in AngularJS 2.0&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;h2&gt;
Prerequisite for Development:&lt;o:p&gt;&lt;/o:p&gt;&lt;/h2&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
If you want to start development or learn AngularJS it is
very easy. You just need to prior knowledge of HTML, CSS, JavaScript and basic understanding
of object oriented programming. &amp;nbsp;You don’t
need a high end IDE for development in AngularJS. If you are familiar with &lt;a href=&quot;https://notepad-plus-plus.org/&quot;&gt;NotePad++&lt;/a&gt;, &lt;a href=&quot;https://www.textpad.com/&quot;&gt;Textpad&lt;/a&gt;, &lt;a href=&quot;https://www.editplus.com/&quot;&gt;EditPlus&lt;/a&gt;
or &lt;a href=&quot;https://atom.io/&quot;&gt;Atom&lt;/a&gt; then you are good to go with writing
your AngularJS application using any of these IDEs. For learning purpose you
may need not any server to execute your AngularJS code unless you are using any
service like http or any other service that needs web server intervention. You
can simple put all your .js, .ts or .html files along in one folder and execute
the code using any web browser. For developing a full flexed web application
you may need a web server like Apache http server.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;h2&gt;
Advantage and Disadvantage&lt;o:p&gt;&lt;/o:p&gt;&lt;/h2&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
You now nothing perfect in this world, language or any other
matter in that regard. So does Angular. It comes with it’s bag of pros and
cons. &amp;nbsp;Mentioned below the advantage and
disadvantage of Angular.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;
Advantage of Angular&lt;o:p&gt;&lt;/o:p&gt;&lt;/h3&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
For me the biggest advantage that come with AngularJS is, it’s
architecture helps it to automate unit testing using tools.&amp;nbsp; I will write a different post on unit testing
in AngularJS later. Since AngularJS 2.0 used for mobile application development
unit testing helps developer code a bug free application.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
The second biggest advantage is the support for Angular
development. As Angular is supported and maintained by Google getting support
for any issue is rather easy.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Thirdly as you know Angular supports MVW framework, the
codes are module and reusable. Hence development and time to market is fast.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Developers can build Rich Internet application (RIA) and
responsive website with Angular as it support data binding to HTML. Due to
cross browser compatibility a single angular application can run on any device
like, a desktop pc, a mobile phone or tablet without any code change.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;h3&gt;
Disadvantage of Angular&lt;o:p&gt;&lt;/o:p&gt;&lt;/h3&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
The biggest disadvantage of the AngularJS is it is a JavaScript
based application and if JavaScript is disabled on user browser whole
application will go for a toss. That mean you need the user to enable JavaScript
on the browser to run your application successfully.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Second major disadvantage of Angular is Security. You need
to depend upon server side authentication as client side authentication is not considered
safe in Angular. In face I personally believe any java script based client side
authentication as safe when compared to server side authentication.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
I just mentioned few basic disadvantage of Angular. As you
lean and deep dive into Angular you will find few more disadvantages of Angular
&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h2&gt;
Where to Learn&lt;o:p&gt;&lt;/o:p&gt;&lt;/h2&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Now a days learning any language is much easier with the
help internet and Google. There are lot of information and study material available
in the internet. Mentioned here few sites where you can learn and find relevant
information regarding AngularJS.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoListParagraphCxSpFirst&quot; style=&quot;mso-list: l0 level1 lfo1; text-indent: -.25in;&quot;&gt;
&lt;!--[if !supportLists]--&gt;1.&lt;span style=&quot;font-size: 7pt; font-stretch: normal; font-variant-numeric: normal; line-height: normal;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;!--[endif]--&gt;&lt;a href=&quot;https://angularjs.org/&quot;&gt;https://angularjs.org/&lt;/a&gt;
&amp;nbsp;- This is official website of AngularJS.
You can get all the information you need here apart from the source code of
Angular.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;mso-list: l0 level1 lfo1; text-indent: -.25in;&quot;&gt;
&lt;!--[if !supportLists]--&gt;2.&lt;span style=&quot;font-size: 7pt; font-stretch: normal; font-variant-numeric: normal; line-height: normal;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;!--[endif]--&gt;&lt;a href=&quot;http://www.w3schools.com/angular/&quot;&gt;http://www.w3schools.com/angular/&lt;/a&gt;
- For self learning I prefer this site for Novice users.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoListParagraphCxSpLast&quot; style=&quot;mso-list: l0 level1 lfo1; text-indent: -.25in;&quot;&gt;
&lt;!--[if !supportLists]--&gt;3.&lt;span style=&quot;font-size: 7pt; font-stretch: normal; font-variant-numeric: normal; line-height: normal;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;!--[endif]--&gt;&lt;a href=&quot;https://www.tutorialspoint.com/angularjs/&quot;&gt;https://www.tutorialspoint.com/angularjs/&lt;/a&gt;
: This is another site for Novice developers to learn and check sample
application provided here.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: .25in;&quot;&gt;
The above 3 are my preferred site
for learning for developers. On internet you can find different sites providing
course free and paid basis like&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: .25in;&quot;&gt;
&amp;nbsp;&lt;a href=&quot;https://www.codeschool.com/courses/shaping-up-with-angular-js&quot;&gt;https://www.codeschool.com/courses/shaping-up-with-angular-js&lt;/a&gt;
, &amp;nbsp;&lt;a href=&quot;https://www.codecademy.com/learn/learn-angularjs&quot;&gt;https://www.codecademy.com/learn/learn-angularjs&lt;/a&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: .25in;&quot;&gt;
You can find a lot more if you bit
do a Google on Angular.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;form action=&quot;http://www.google.co.in/cse&quot; id=&quot;cse-search-box&quot;&gt;
  &lt;div&gt;
    &lt;input type=&quot;hidden&quot; name=&quot;cx&quot; value=&quot;partner-pub-9669148603845976:qedn6khekoj&quot; /&gt;
    &lt;input type=&quot;hidden&quot; name=&quot;ie&quot; value=&quot;ISO-8859-1&quot; /&gt;
    &lt;input type=&quot;text&quot; name=&quot;q&quot; size=&quot;50&quot; /&gt;
    &lt;input type=&quot;submit&quot; name=&quot;sa&quot; value=&quot;Search&quot; /&gt;
  &lt;/div&gt;
&lt;/form&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;http://www.google.co.in/cse/brand?form=cse-search-box&amp;amp;lang=en&quot;&gt;&lt;/script&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samalpramod.blogspot.com/feeds/6956470913000213454/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://samalpramod.blogspot.com/2017/01/angularjs-overview.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4234821960632870091/posts/default/6956470913000213454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4234821960632870091/posts/default/6956470913000213454'/><link rel='alternate' type='text/html' href='http://samalpramod.blogspot.com/2017/01/angularjs-overview.html' title='AngularJS Overview'/><author><name>samalpramod</name><uri>http://www.blogger.com/profile/10503328453756071691</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total><georss:featurename>New Delhi, Delhi, India</georss:featurename><georss:point>28.6139391 77.209021200000052</georss:point><georss:box>28.3907261 76.886297700000057 28.8371521 77.531744700000047</georss:box></entry><entry><id>tag:blogger.com,1999:blog-4234821960632870091.post-4042335139182579041</id><published>2016-03-11T17:50:00.001+05:30</published><updated>2016-03-11T17:50:43.520+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="JavaMail"/><category scheme="http://www.blogger.com/atom/ns#" term="MS Exchange Server"/><category scheme="http://www.blogger.com/atom/ns#" term="SMTP MAIL"/><title type='text'>JavaMail Issue with MS Exchange Server</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div style=&quot;border-bottom: solid #4F81BD 1.0pt; border: none; margin-left: 5.05pt; margin-right: 0in; mso-border-bottom-themecolor: accent1; mso-element: para-border-div; padding: 0in 0in 4.0pt 0in;&quot;&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-indent: 0in;&quot;&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;In
one of earlier mail I had explained how to send mail using Java. That is how
normally we send mail using Java to any mail server. Today I am going to
explain what kind of issue we can face while sending mail using Microsoft
exchange server and how to resolve it. &amp;nbsp;Before I proceed let me explain the background
of my application.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;I
have a java web application which runs on Tomcat web server. The application
sends mail to user on different occasions. For example if the user forgot a
password, then click on reset password link then the application sends a mail
to the user’s registered email address. We have a MS exchange server which is
hosted on a different server. Our tomcat is hosted on another server. Our web
application is developed in Java using Spring framework.. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;My
class for sending mail was something like the one below. I am putting my sample
code for JSP file to send mail for testing the issue. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-indent: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;############### Sample JSP file
################&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;lt;bean id=&quot;mailSender&quot;
class=&quot;org.springframework.mail.javamail.JavaMailSenderImpl&quot;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp; &amp;lt;property
name=&quot;host&quot; value=&quot;myexchangeserveripaddress&quot; /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;lt;property
name=&quot;port&quot; value=&quot;25&quot; /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp; &amp;lt;property
name=&quot;javaMailProperties&quot;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;lt;props&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;prop
key=&quot;mail.host&quot;&amp;gt;host&amp;lt;/prop&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;prop
key=&quot;mail.port&quot;&amp;gt;port&amp;lt;/prop&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;lt;/props&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp; &amp;lt;/property&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;lt;/bean&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;lt;%@ page
import=&quot;java.io.*,java.util.*,javax.mail.*&quot;%&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;lt;%@ page
import=&quot;javax.mail.internet.*,javax.activation.*&quot;%&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;lt;%@ page
import=&quot;javax.servlet.http.*,javax.servlet.*&quot;%&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;lt;%&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;String result;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;//Recipient&#39;s
email ID needs to be mentioned.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;String to =
&quot;mymail@gmail.com&quot;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;// Sender&#39;s
email ID needs to be mentioned&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;String from =
&quot;mailidfrom@mydomainname.org&quot;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;final String
username = &quot;myusername&quot;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;final String
password = &quot;mypassword&quot;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;// Assuming you are sending email through
relay.jangosmtp.net&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;String host =
&quot;myhostname&quot;; // I am using IP address of my MS exchange server. You
can put the IP address of your exchange server here.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;Properties
props = new Properties();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;//props.put(&quot;mail.smtp.auth&quot;,
&quot;true&quot;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;//props.put(&quot;mail.smtp.starttls.enable&quot;,
&quot;true&quot;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;props.put(&quot;mail.smtp.host&quot;, host);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;props.put(&quot;mail.smtp.port&quot;,
&quot;25&quot;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;//Get the
Session object.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;Session
mailSession = Session.getInstance(props,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp; new
javax.mail.Authenticator() {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected
PasswordAuthentication getPasswordAuthentication() {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return new
PasswordAuthentication(username,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
password);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp; });&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;try {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp; // Create a
default MimeMessage object.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp; Message
message = new MimeMessage(mailSession);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp; // Set From:
header field of the header.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;
message.setFrom(new InternetAddress(from));&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;
message.setRecipients(Message.RecipientType.TO,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
InternetAddress.parse(to));&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp; message.setSubject(&quot;Testing
Subject&quot;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;
message.setText(&quot;Hello, this is sample for to check send &quot;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; +
&quot;email using JavaMailAPI in JSP &quot;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp; // Send
message&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;
Transport.send(message);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;
System.out.println(&quot;Sent message successfully....&quot;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp; result =
&quot;Sent message successfully....&quot;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;} catch
(MessagingException e) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;
e.printStackTrace(response.getWriter());&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp; result =
&quot;Error: unable to send message....&quot;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;%&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;lt;html&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;lt;head&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;lt;title&amp;gt;Send Email using JSP&amp;lt;/title&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;lt;/head&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;lt;body&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;lt;center&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp; &amp;lt;h1&amp;gt;Send
Email using JSP&amp;lt;/h1&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;lt;/center&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;lt;p
align=&quot;center&quot;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp; &amp;lt;%&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp;
out.println(&quot;Result: &quot; + result + &quot;\n&quot;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp; %&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;lt;/p&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;lt;/body&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;lt;/html&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-indent: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-indent: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;On trying to send mail I could not able to send the
mail. When checked the error stack trace I found the following error followed
by trail of errors.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;b&gt;&lt;i&gt;&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;“javax.mail.AuthenticationFailedException:
No authentication mechansims supported by both server and client”&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;The error itself is self explanatory. That mean there
is no authentication mechanism between the mail server and the client, which is
my application. So I removed the two line below from the above class file.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;// props.put(&quot;mail.smtp.auth&quot;,
&quot;true&quot;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // props.put(&quot;mail.smtp.starttls.enable&quot;,
&quot;true&quot;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;Then I tried to send the mail again. But I got the
same message again. The simple JSP file created above able to send mail using
the above configuration. But to my surprise the class file I created using
Spring framework does not with xml configuration does not work.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;I forgot add one more thing that my exchange server
does not require any authentication from my application server to send mail. So
it is something to do with my java code in spring framework that was generating
the error.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;On checking the above I found that I am providing
username and password to my mail sending method. Though I have removed authentication
line but still the mail connect function is going for authentication as I am
passing username and password thus producing the error.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;Now I removed the two lines containing username and password
from properties and try to execute the code. Now the function worked like
wonder sending mail without any issue. So the bottom line here is if your
exchange server does not require authentication the don’t pass username and
password in the connect function to send mail. Putting the sample xml file and
sample jave code for sending mail using Microsoft exchange server below for
reference. Hope this helps somebody in future.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;################ xml file
##################&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot;
encoding=&quot;UTF-8&quot;?&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;lt;beans
xmlns=&quot;http://www.springframework.org/schema/beans&quot;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns:context=&quot;http://www.springframework.org/schema/context&quot;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns:mvc=&quot;http://www.springframework.org/schema/mvc&quot;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xsi:schemaLocation=&quot;http://www.springframework.org/schema/beans
&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; http://www.springframework.org/schema/beans/spring-beans-3.1.xsd&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; http://www.springframework.org/schema/context&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; http://www.springframework.org/schema/context/spring-context-3.1.xsd&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; http://www.springframework.org/schema/mvc
&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd&quot;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;bean
id=&quot;mailSender&quot; class=&quot;org.springframework.mail.javamail.JavaMailSenderImpl&quot;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property
name=&quot;host&quot; value=&quot;myexchangeserverIpddress&quot; /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;lt;property name=&quot;port&quot;
value=&quot;25&quot; /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property
name=&quot;javaMailProperties&quot;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;props&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;prop
key=&quot;mail.host&quot;&amp;gt;host&amp;lt;/prop&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;prop
key=&quot;mail.port&quot;&amp;gt;port&amp;lt;/prop&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/props&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/property&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/bean&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;lt;/beans&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;################### Mail Sender file
#################&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;package com.nkc.ats.util;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;import javax.mail.MessagingException;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;import javax.mail.internet.MimeMessage;import
org.springframework.beans.factory.annotation.Autowired;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;import org.springframework.mail.MailException;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;import org.springframework.mail.MailParseException;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;import org.springframework.mail.SimpleMailMessage;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;import org.springframework.mail.javamail.JavaMailSender;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;import
org.springframework.mail.javamail.MimeMessageHelper;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;import org.springframework.stereotype.Component;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;@Component&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;public class MailUtil {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;@Autowired&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;JavaMailSender
mailSender;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;public boolean
sendEmail1(String from,String to,String messageText,String subject){&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp; boolean
result=false;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp; try {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp;
SimpleMailMessage message=new SimpleMailMessage();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp;
message.setFrom(from);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp;
message.setTo(to);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp;
message.setSubject(subject);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp;
message.setText(messageText);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp; mailSender.send(message);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp; result=true;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp; } catch
(MailException e) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp;
e.printStackTrace();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp; return result;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;public void
sendEmailByInfo(String from,String to,String messageText,String subject){&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; MimeMessage message =
mailSender.createMimeMessage();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; boolean result=false;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; try{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MimeMessageHelper helper = new
MimeMessageHelper(message, true);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; helper.setFrom(from);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; helper.setTo(to);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; helper.setSubject(subject);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; helper.setText(messageText,true);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; result=true;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; catch (MessagingException e) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; throw new MailParseException(e);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mailSender.send(message);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;span style=&quot;font-size: 12.0pt;&quot;&gt;&amp;nbsp;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-indent: 0in;&quot;&gt;



















































































































































































































































































































































































































&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0in; text-indent: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;form action=&quot;http://www.google.co.in/cse&quot; id=&quot;cse-search-box&quot;&gt;
  &lt;div&gt;
    &lt;input type=&quot;hidden&quot; name=&quot;cx&quot; value=&quot;partner-pub-9669148603845976:qedn6khekoj&quot; /&gt;
    &lt;input type=&quot;hidden&quot; name=&quot;ie&quot; value=&quot;ISO-8859-1&quot; /&gt;
    &lt;input type=&quot;text&quot; name=&quot;q&quot; size=&quot;50&quot; /&gt;
    &lt;input type=&quot;submit&quot; name=&quot;sa&quot; value=&quot;Search&quot; /&gt;
  &lt;/div&gt;
&lt;/form&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;http://www.google.co.in/cse/brand?form=cse-search-box&amp;amp;lang=en&quot;&gt;&lt;/script&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samalpramod.blogspot.com/feeds/4042335139182579041/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://samalpramod.blogspot.com/2016/03/javamail-issue-with-ms-exchange-server.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4234821960632870091/posts/default/4042335139182579041'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4234821960632870091/posts/default/4042335139182579041'/><link rel='alternate' type='text/html' href='http://samalpramod.blogspot.com/2016/03/javamail-issue-with-ms-exchange-server.html' title='JavaMail Issue with MS Exchange Server'/><author><name>samalpramod</name><uri>http://www.blogger.com/profile/10503328453756071691</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4234821960632870091.post-7378315253380849548</id><published>2015-11-09T20:49:00.000+05:30</published><updated>2015-11-09T20:49:24.928+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="PDF"/><category scheme="http://www.blogger.com/atom/ns#" term="PHP"/><category scheme="http://www.blogger.com/atom/ns#" term="Thumbnail"/><title type='text'>CREATE THUMBNAIL FROM A PDF FILE IN PHP</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
In my &lt;a href=&quot;http://samalpramod.blogspot.in/2015/10/convert-image-to-pdf-in-php-using-fpdf.html&quot;&gt;last
blog&lt;/a&gt; I had explained how to create a pdf file from an image and how to
encrypt a pdf file usng password. In this blog I will explain how to create a
thumbnail from a pdf file after uploading from a web page. Those develop using
PHP, Java, and .Net knows how to create a thumbnail from an image file while
uploading. Before I start to explain let me clarify the platform I am using for
the development. I have used the 64 bit windows 7 machine with XAMPP web server
with &lt;a href=&quot;http://php.net/releases/5_4_0.php&quot;&gt;PHP 5.4.&amp;nbsp; &lt;/a&gt;&amp;nbsp;Why I had mentioned the environment because
most of the development issue that developers face are more due to environment
issue.&amp;nbsp; &lt;/div&gt;
&lt;h1&gt;
Download Ghostscript and ImageIck package&lt;/h1&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
I will use &lt;a href=&quot;http://ghostscript.com/&quot;&gt;Ghostsprit &lt;/a&gt;&amp;nbsp;and &lt;a href=&quot;http://www.imagemagick.org/script/index.php&quot;&gt;Imagick&lt;/a&gt; to create a
thumbnail from a pdf file.&amp;nbsp; If any one
uses Linux as OS then most of them come with &lt;a href=&quot;http://ghostscript.com/&quot;&gt;Ghostsprit
&lt;/a&gt;&amp;nbsp;and &lt;a href=&quot;http://www.imagemagick.org/script/index.php&quot;&gt;Imagick&lt;/a&gt;.&amp;nbsp; In case the package is not there they can
download from the server.&amp;nbsp;&amp;nbsp; For Mac you
can download the respective version of the &lt;a href=&quot;http://ghostscript.com/&quot;&gt;Ghostsprit
&lt;/a&gt;&amp;nbsp;and &lt;a href=&quot;http://www.imagemagick.org/script/index.php&quot;&gt;Imagick&lt;/a&gt; from the server.
For window it is bit tricky, for those using 64 bit os have to download a 64
bit compatible package and those using 32 but must download 32 bit package for
both ghostscript and ImagIck package.&lt;/div&gt;
&lt;h1&gt;
Uploading a PDF file&lt;/h1&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
All of you know how to upload a file using PHP.&amp;nbsp; So I am not going explain that here. Even if
you don’t know how to upload a file a little google search will provide lots of
sample code to upload a file in PHP. Same sample code can be used to upload a
PDF file.&lt;/div&gt;
&lt;h1&gt;
Set Target Directory&lt;/h1&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Once you had written the code to upload the file, create a
directory to store the pdf files and thumbnails of pdf files. In my case I have
created a folder called “uploads” where I intended to upload my pdf files.
Inside the “uploads” folder I have created one more directory called “thumbnails”
where I will store thumbnail images of my pdf files.&lt;/div&gt;
&lt;h1&gt;
Write function to create thumbnail&lt;/h1&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Now is the time to write a function to create thumbnail from
a pdf file.&amp;nbsp; I have created a sample code
that takes two parameters. One is source file that is the pdf file with the
path that we uploaded to server. Second one is the thumbnail file name. I named
the function as genPdfThumbnail().&lt;/div&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;MsoTableGrid&quot; style=&quot;background: #F2DBDB; border-collapse: collapse; border: none; mso-background-themecolor: accent2; mso-background-themetint: 51; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-yfti-tbllook: 1184;&quot;&gt;
 &lt;tbody&gt;
&lt;tr&gt;
  &lt;td style=&quot;border: solid black 1.0pt; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-themecolor: text1; padding: 0in 5.4pt 0in 5.4pt; width: 6.65in;&quot; valign=&quot;top&quot; width=&quot;638&quot;&gt;
  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
function genPdfThumbnail($source, $target)&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;//
  source pdf file path &lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;$source = realpath($source);&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;// target thumbnail directory&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $target =
  realpath(dirname($source)).&quot;/thumbnails/&quot;.$target;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Create thumbnail of
  the first page 0-first page, 1-second page and so on&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $im&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = new Imagick($source.&quot;[0]&quot;); &lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //
  Prevent image colors from inverting&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
  $im-&amp;gt;setImageColorspace(255);&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //
  Set the thumbnail image format&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
  $im-&amp;gt;setimageformat(&quot;jpeg&quot;);&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //
  Set thumbnail image width, height&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
  $im-&amp;gt;thumbnailimage(160, 120); &lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //
  Create thumbnail image &lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $im-&amp;gt;writeimage($target);&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $im-&amp;gt;clear();&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $im-&amp;gt;destroy();&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;
&lt;/td&gt;
 &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h1&gt;
Call the function&lt;/h1&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Now we have created a function above that will create a
thumbnail from us. Now we have to call the function once the upload is done. So
in the php file where you have written the code for uploading the pdf file we
can call this function to create the thumbnail image.&amp;nbsp; Here is my php code to call the genPdfThumbnail()
function.&lt;/div&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;MsoTableGrid&quot; style=&quot;background: #F2DBDB; border-collapse: collapse; border: none; mso-background-themecolor: accent2; mso-background-themetint: 51; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-yfti-tbllook: 1184;&quot;&gt;
 &lt;tbody&gt;
&lt;tr&gt;
  &lt;td style=&quot;border: solid black 1.0pt; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-themecolor: text1; padding: 0in 5.4pt 0in 5.4pt; width: 6.65in;&quot; valign=&quot;top&quot; width=&quot;638&quot;&gt;
  &lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
if
  (move_uploaded_file($_FILES[&quot;fileToUpload&quot;][&quot;tmp_name&quot;],
  $target_file)) &lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
{&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //name the
  thumbnail image the same as the pdf file&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $thumbnail =
  genPdfThumbnail($target_file,$thumb_file);&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo &quot;The
  thumbnail file &quot;. basename(
  $_FILES[&quot;fileToUpload&quot;][&quot;name&quot;]). &quot;.jpg has been
  created.&quot;;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
}&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
else&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
{&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo
  &quot;Sorry, there was an error uploading your file.&quot;;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
}&lt;/div&gt;
&lt;/td&gt;
 &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Hope this helps and you enjoy creating thumbnail for your
pdf file. In case any issue you can always mail me or post your comment so that
I can help you.&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;form action=&quot;http://www.google.co.in/cse&quot; id=&quot;cse-search-box&quot;&gt;
  &lt;div&gt;
    &lt;input type=&quot;hidden&quot; name=&quot;cx&quot; value=&quot;partner-pub-9669148603845976:qedn6khekoj&quot; /&gt;
    &lt;input type=&quot;hidden&quot; name=&quot;ie&quot; value=&quot;ISO-8859-1&quot; /&gt;
    &lt;input type=&quot;text&quot; name=&quot;q&quot; size=&quot;50&quot; /&gt;
    &lt;input type=&quot;submit&quot; name=&quot;sa&quot; value=&quot;Search&quot; /&gt;
  &lt;/div&gt;
&lt;/form&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;http://www.google.co.in/cse/brand?form=cse-search-box&amp;amp;lang=en&quot;&gt;&lt;/script&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samalpramod.blogspot.com/feeds/7378315253380849548/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://samalpramod.blogspot.com/2015/11/create-thumbnail-from-pdf-file-in-php.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4234821960632870091/posts/default/7378315253380849548'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4234821960632870091/posts/default/7378315253380849548'/><link rel='alternate' type='text/html' href='http://samalpramod.blogspot.com/2015/11/create-thumbnail-from-pdf-file-in-php.html' title='CREATE THUMBNAIL FROM A PDF FILE IN PHP'/><author><name>samalpramod</name><uri>http://www.blogger.com/profile/10503328453756071691</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total><georss:featurename>New Delhi, Delhi, India</georss:featurename><georss:point>28.6139391 77.209021200000052</georss:point><georss:box>28.1680166 76.563574200000048 29.059861599999998 77.854468200000056</georss:box></entry><entry><id>tag:blogger.com,1999:blog-4234821960632870091.post-5732628818651635802</id><published>2015-10-20T20:11:00.000+05:30</published><updated>2015-10-28T19:04:35.437+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="FPDF"/><category scheme="http://www.blogger.com/atom/ns#" term="PDF"/><category scheme="http://www.blogger.com/atom/ns#" term="PHP"/><title type='text'>Convert Image to PDF in PHP using FPDF</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div align=&quot;center&quot; class=&quot;MsoTitle&quot; style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;text-align: left;&quot;&gt;In this blog I would like to explain how to convert image to
pdf file and encrypt the same.&lt;/span&gt;&lt;span style=&quot;text-align: left;&quot;&gt;&amp;nbsp;
&lt;/span&gt;&lt;span style=&quot;text-align: left;&quot;&gt;Converting image to pdf can be different ways Imagick or FPDF. Here I
will explain how to convert image to PDF using FPDF library and protect the
same using a password. Remember FPDF is a classic PHP class which generates PDF
files. To know more about &lt;/span&gt;&lt;a href=&quot;http://www.fpdf.org/&quot; style=&quot;text-align: left;&quot;&gt;FPDF&lt;/a&gt;&lt;span style=&quot;text-align: left;&quot;&gt; you can visit
their &lt;/span&gt;&lt;a href=&quot;http://www.fpdf.org/&quot; style=&quot;text-align: left;&quot;&gt;website&lt;/a&gt;&lt;span style=&quot;text-align: left;&quot;&gt;.&lt;/span&gt;&lt;/div&gt;
&lt;h1&gt;
Download FPDF Source Code&lt;/h1&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
To use FPDF you need to &lt;a href=&quot;http://www.fpdf.org/&quot;&gt;download&lt;/a&gt;
the library files from their website and copy it to your web directory.&lt;/div&gt;
&lt;h1&gt;
USE FPDF TO Create PDF file&lt;/h1&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
To convert image to pdf we need to include &amp;nbsp;&#39;fpdi/FPDI.php&#39;.&amp;nbsp; If we want to secure the file then we need to
use “FPDI_Protection.php”. &amp;nbsp;To create a new
FPDF object we sue the following command&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
using $pdf = new FPDF();&amp;nbsp;
&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
After crating a FPDF object, we can initialize the FPDF object
using the following method.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
$pdf-&amp;gt;FPDF(&#39;p&#39;,&#39;pt&#39;,&#39;a4&#39;); &lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Here the first parameter stands for orientation (Landscape
or Portrait) and second parameter stands for unit of measurement (mm or pt).
The third or the last parameter stands for format of the PDF(A4 , Letter,A5).
It is like the same format when you create a pdf using pdf writer or document
using Microsoft word or any other word editor. Now you can add a page to the
pdf using the following statement below&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
$pdf-&amp;gt;AddPage();&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Now the next step is to add the image to the pdf. The following
command will help you to add the image to pdf.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
$pdf-&amp;gt;Image($srcImgFile,$x_pos,$Y_pos,$width,$height);&lt;/div&gt;
&lt;h1&gt;
Protect Your Document&lt;/h1&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
To protect the document yuu need to include ‘FPDI_Protection.php&#39;&amp;nbsp; as shown below.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
require_once(&#39;fpdi/FPDI_Protection.php&#39;);&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
To protect the file to be copied by anybody use the
following command&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
$pdf-&amp;gt;SetProtection(array(),$password);&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Here the first parameter is an array of permissions and
second one is the password to protect the document. The permission array
contains the following values.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Print – Print the pdf document&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Copy – Copy the pdf file&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Modify - Modify the pdf file&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Annot-forms &amp;nbsp;– Add annotation
to pdf file&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h1&gt;
Save Your Document&lt;/h1&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
After you set the permission to the file, now you can save
the file to destination file or folder. To save the file you can use the
following command&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
$pdf-&amp;gt;Output($destPdfFile,&#39;F&#39;);&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Here the first parameter takes the destination file name
along with file path, while the second parameter takes the destination where
you want to display the file. Following options can be passed as parameter for
the second parameter.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
F – Save to local file path with the name&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
S -&amp;nbsp; Return the
document as string&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
D – Send to browser to be saved as download document&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
I - To be opened inline in the browser&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
I f the Output function called without parameter then the
pdf will be opened in the web browser.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Note: To read more about the FPDF visit the &lt;a href=&quot;http://www.fpdf.org/&quot;&gt;manual&lt;/a&gt; section on the website. &amp;nbsp;For &lt;a href=&quot;http://www.fpdf.org/&quot;&gt;tutorial&lt;/a&gt;
you can visit the tutorial section of the website.&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;form action=&quot;http://www.google.co.in/cse&quot; id=&quot;cse-search-box&quot;&gt;
  &lt;div&gt;
    &lt;input type=&quot;hidden&quot; name=&quot;cx&quot; value=&quot;partner-pub-9669148603845976:qedn6khekoj&quot; /&gt;
    &lt;input type=&quot;hidden&quot; name=&quot;ie&quot; value=&quot;ISO-8859-1&quot; /&gt;
    &lt;input type=&quot;text&quot; name=&quot;q&quot; size=&quot;50&quot; /&gt;
    &lt;input type=&quot;submit&quot; name=&quot;sa&quot; value=&quot;Search&quot; /&gt;
  &lt;/div&gt;
&lt;/form&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;http://www.google.co.in/cse/brand?form=cse-search-box&amp;amp;lang=en&quot;&gt;&lt;/script&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samalpramod.blogspot.com/feeds/5732628818651635802/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://samalpramod.blogspot.com/2015/10/convert-image-to-pdf-in-php-using-fpdf.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4234821960632870091/posts/default/5732628818651635802'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4234821960632870091/posts/default/5732628818651635802'/><link rel='alternate' type='text/html' href='http://samalpramod.blogspot.com/2015/10/convert-image-to-pdf-in-php-using-fpdf.html' title='Convert Image to PDF in PHP using FPDF'/><author><name>samalpramod</name><uri>http://www.blogger.com/profile/10503328453756071691</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total><georss:featurename>New Delhi, Delhi, India</georss:featurename><georss:point>28.6139391 77.209021200000052</georss:point><georss:box>28.1680166 76.563574200000048 29.059861599999998 77.854468200000056</georss:box></entry><entry><id>tag:blogger.com,1999:blog-4234821960632870091.post-4580398667699669935</id><published>2015-08-19T16:14:00.000+05:30</published><updated>2015-08-19T16:14:28.600+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Apache"/><category scheme="http://www.blogger.com/atom/ns#" term="Web Server"/><title type='text'>Apache 404 File not found error when folder already exists</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Some of the developers might have come across “404 File not
found” error in their life. The error is self explanatory. Web server returns
the &quot;HTTP 404 - File not found&quot; error message when it cannot retrieve
the page that was requested by the client (web browser).&amp;nbsp; That means the file does not exist there in
the specified path. It is really annoying when we get”404 File not found” error
when the file is there in the desired folder. &amp;nbsp;I am going to explain why we get this error
when the file is there and how to resolve the issue.&lt;/div&gt;
&lt;h1&gt;
Check your DocumentRoot Value&lt;/h1&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
All of you must know the default location for “DocumentRoot”
is “/var/www/html”. In some server it is set to “/var/www/htdocs/”. You can
find the “DocumentRoot” value in httpd.conf file. You can find this file in “/etc/httpd/conf”
folder. &quot;DocumentRoot&quot; i.e. the directory out of which all the
pages/documents are served to the client that requests a page or file. By
default, all requests are taken from this directory, but symbolic links and
aliases may be used to point to other locations.&amp;nbsp; This can be changed or set to any other
folder user set DocumentRoot to. So hence if you are getting &quot;404 File not
found&quot; error then first point to check is look for the DocumentRoot value.
Your file and folder should be in the DocumentRoot to be accessed from web. If
it is not there then you will definitely get &quot;404 File not found&quot;
error.&lt;/div&gt;
&lt;h1&gt;
Check Your Virtual Host&lt;/h1&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
httpd is also capable of Virtual Hosting. That means the
server can have more than one domain or multiple sub domains. In that case the
server can receive requests for more than one domain or sub domain hosted on
the server. Different DocumentRoot can be specified for each domain, sub domain
or virtual host.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
A virtual host for example can be declared in the httpd.conf
file as shown below.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;virtual 11.22.33.44:80=&quot;&quot; host=&quot;&quot;&gt;&lt;/virtual&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
ServerAdmin admin@samalpramod.com&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
DocumentRoot &quot;/var/www/html/samalpramod&quot;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
ServerName www.samalpramod.com&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
ErrorLog logs/www.samalpramod.com-error_log&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
CustomLog logs/www.samalpramod.com-access_log common&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; line-height: 115%; mso-ansi-language: EN-US; mso-ascii-theme-font: minor-latin; mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;; mso-bidi-language: AR-SA; mso-bidi-theme-font: minor-bidi; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;&quot;&gt;Please check the DocumentRoot is set to&amp;nbsp;&amp;nbsp; &quot;/var/www/html/samalpramod&quot;. So to
access any file from DocumentRoot directory from web user have to type
www.samalpramod.com followed by filename rather than
www.samalpramod.com/samalpramod followed by file name. For example if any user
wants to access the index.html from the “DocumentRoot” must type
www.samalpramod.com/index.html rather than
www.samalpramod.com/samalpramod/index.html. If any users follows the second
option then the web server will show &quot;404 File Not Found&quot; error. So
one of the main reason for getting “404 File Not Found” error is file or folder
is placed in a folder while DocumentRoot is set to a different folder.&lt;/span&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;form action=&quot;http://www.google.co.in/cse&quot; id=&quot;cse-search-box&quot;&gt;
  &lt;div&gt;
    &lt;input type=&quot;hidden&quot; name=&quot;cx&quot; value=&quot;partner-pub-9669148603845976:qedn6khekoj&quot; /&gt;
    &lt;input type=&quot;hidden&quot; name=&quot;ie&quot; value=&quot;ISO-8859-1&quot; /&gt;
    &lt;input type=&quot;text&quot; name=&quot;q&quot; size=&quot;50&quot; /&gt;
    &lt;input type=&quot;submit&quot; name=&quot;sa&quot; value=&quot;Search&quot; /&gt;
  &lt;/div&gt;
&lt;/form&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;http://www.google.co.in/cse/brand?form=cse-search-box&amp;amp;lang=en&quot;&gt;&lt;/script&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samalpramod.blogspot.com/feeds/4580398667699669935/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://samalpramod.blogspot.com/2015/08/apache-404-file-not-found-error-when.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4234821960632870091/posts/default/4580398667699669935'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4234821960632870091/posts/default/4580398667699669935'/><link rel='alternate' type='text/html' href='http://samalpramod.blogspot.com/2015/08/apache-404-file-not-found-error-when.html' title='Apache 404 File not found error when folder already exists'/><author><name>samalpramod</name><uri>http://www.blogger.com/profile/10503328453756071691</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4234821960632870091.post-2036948903153611309</id><published>2015-08-07T20:00:00.001+05:30</published><updated>2016-03-01T11:16:28.019+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="mysql"/><category scheme="http://www.blogger.com/atom/ns#" term="PHP"/><title type='text'>mysql_real_escape_string ()  Access denied for user &#39;root&#39;@&#39;localhost&#39; (using password: NO) in cakephp</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Developers who have worked in PHP sometimes used mysql_real_escape_string()
for escaping special character from SQL statement or Strings. Basically this mysql_real_escape_string()
is a core PHP function that creates a proper SQL string or SQL query removing
special character. This function was there in PHP 5.5 below. It was
deprecated in PHP 5.5 and will be removed in PHP 7.0 higher version. Instead &lt;a href=&quot;http://php.net/manual/en/book.mysqli.php&quot;&gt;&lt;span style=&quot;color: windowtext; text-decoration: none; text-underline: none;&quot;&gt;MySQLi&lt;/span&gt;&lt;/a&gt;&amp;nbsp;or&amp;nbsp;&lt;a href=&quot;http://php.net/manual/en/ref.pdo-mysql.php&quot;&gt;&lt;span style=&quot;color: windowtext; text-decoration: none; text-underline: none;&quot;&gt;PDO_MySQL&lt;/span&gt;&lt;/a&gt;&amp;nbsp;extension should be used in future PHP version
7.0 above.&amp;nbsp; For information about mysql_real_escape_string()
you can view PHP&lt;strong&gt;&lt;span style=&quot;background: white; color: #336699; font-family: &amp;quot;courier new&amp;quot;; font-weight: normal; letter-spacing: -0.75pt;&quot;&gt; &lt;a href=&quot;http://php.net/manual/en/function.mysql-real-escape-string.php&quot;&gt;documentation&lt;/a&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;&lt;span style=&quot;background: white; color: #336699; font-family: &amp;quot;courier new&amp;quot;; font-weight: normal; letter-spacing: -0.75pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Sometimes developer who worked in PHP frameworks like
CakePHP or any other framework might have come across some error or issues. &amp;nbsp;I am going to throw some light on error that
comes in CakePHP.&lt;br /&gt;
&lt;br /&gt;
The error basically is
“mysql_real_escape_string()&amp;nbsp; Access
denied for user &#39;xxxxxx&#39;@&#39;localhost&#39; (using password: NO)”.&amp;nbsp; The place where I put “xxxxx” will be name of
a mysql user or that can be blank depending upon the mysql user on the system. &lt;br /&gt;
&lt;br /&gt;
Now I will go to explain why the error occurs
in CakePHP and how it should be used. Those use this function to avoid sql
injection in Cakephp they better have to use ORM methods like save(), find(),
saveAll() built in method of CakePHP. &amp;nbsp;If somebody wants to create their own SQL
string with CakePHP, then they can use &lt;a href=&quot;http://book.cakephp.org/2.0/en/core-utility-libraries/sanitize.html&quot;&gt;Sanitize&lt;/a&gt;
class of CakePHP. But Sanitize class is deprecated as of 2.4, and will be
removed in CakePHP 3.0. So those using CakePHP 3.0 or higher must use some
native function or other libraries. Now let us come to the user that uses the
native function i.e. mysql_real_escape_string() function or mysqli_real_escape_string().
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Both the function needs a connection to the database to
function. When calling it, it tries to establish a connection if you didn&#39;t
previously establish one using &lt;a href=&quot;http://php.net/manual/en/function.mysql-connect.php&quot;&gt;mysql_connect&lt;/a&gt;.
If your php.ini has some default credential set for mysql then
mysql_real_escape_string can use the same to connect and you will have false
impression that it worked perfectly for you. Otherwise if you on your local
machine and you apparently have blank password for mysql and the account
name for the &lt;a href=&quot;https://www.mysql.com/&quot;&gt;MySQL&lt;/a&gt; user (mostly users keep
root) is the same as the name the web server, in that case it will work for
you. But when you will move to production server where there is no mysql
credential set in php.ini or the account for mysql and web server is different
it can&#39;t create a database connection and will through a warning. In fact your
application may not work because it will not return the string which you expect
mysql_connect function to return.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
In that case you need to create a connection using mysql
credential and provide the connection to mysql_real_escape_string function
where ever called.&amp;nbsp; For better
flexibility, it is better you can create your own function and create a connection
inside the function and call the mysql_real_escape_string() function as shown
below. You can call your function where ever you need to escape a string in sql
statement&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
public function makeSqlSafe($data)&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&amp;nbsp;{&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;$return_string
= &quot;&quot;;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//
Connect&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$link
= mysql_connect(‘hostname’, ‘username’, &#39;password&#39;)&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;OR
die(mysql_error());&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$value
= trim($data);&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$return_string
= mysql_real_escape_string($value);&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;return
$return_string;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&amp;nbsp;&amp;nbsp;}&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;form action=&quot;http://www.google.co.in/cse&quot; id=&quot;cse-search-box&quot;&gt;
  &lt;div&gt;
    &lt;input type=&quot;hidden&quot; name=&quot;cx&quot; value=&quot;partner-pub-9669148603845976:qedn6khekoj&quot; /&gt;
    &lt;input type=&quot;hidden&quot; name=&quot;ie&quot; value=&quot;ISO-8859-1&quot; /&gt;
    &lt;input type=&quot;text&quot; name=&quot;q&quot; size=&quot;50&quot; /&gt;
    &lt;input type=&quot;submit&quot; name=&quot;sa&quot; value=&quot;Search&quot; /&gt;
  &lt;/div&gt;
&lt;/form&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;http://www.google.co.in/cse/brand?form=cse-search-box&amp;amp;lang=en&quot;&gt;&lt;/script&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samalpramod.blogspot.com/feeds/2036948903153611309/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://samalpramod.blogspot.com/2015/08/mysqlrealescapestring-access-denied-for.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4234821960632870091/posts/default/2036948903153611309'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4234821960632870091/posts/default/2036948903153611309'/><link rel='alternate' type='text/html' href='http://samalpramod.blogspot.com/2015/08/mysqlrealescapestring-access-denied-for.html' title='mysql_real_escape_string ()  Access denied for user &#39;root&#39;@&#39;localhost&#39; (using password: NO) in cakephp'/><author><name>samalpramod</name><uri>http://www.blogger.com/profile/10503328453756071691</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4234821960632870091.post-670984199206048703</id><published>2015-04-22T19:31:00.002+05:30</published><updated>2015-04-22T19:31:55.294+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="HTML5 Video"/><category scheme="http://www.blogger.com/atom/ns#" term="Mp4"/><category scheme="http://www.blogger.com/atom/ns#" term="Ogg"/><category scheme="http://www.blogger.com/atom/ns#" term="WebM"/><title type='text'>NO VIDEO WITH SUPPORTED FORMAT AND MIME TYPE FOUND WITH HTML5</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
If your HTML5 page is able to play audio/video on local host
or local server perfectly and the same page is showing the above error marked
in bold then first thing to do is to check your network setting with your
system admin. Please check with your system admin if they have setup any firewall
or proxy that is blocking audio/video url. I have faced this many times. Most
of video pages that works perfectly on my local machine does not work on the
server as our firewall blocks audio or video urls. &lt;/div&gt;
&lt;h1&gt;
Check audio and video MIME types.&lt;/h1&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
If your HTML5 page able to play the audio and video on one
browser and not able plays the same on different browser then, you need to
check the MIME types. Different browsers support different MIME type for audio
and video files. You need to set these MIME type in the web server. Also make
sure the file type are there in the server in right place and right time. To
add these MIME type you can use the AddType directive&amp;nbsp; to set MIME type&amp;nbsp; in the .htaccess file or httpd.conf &amp;nbsp;file. &lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
There are 3 major video types which are supported by HTML5.
They are MP4, WebM, and Ogg/Ogv. MP4 is encoded with H264 codec while .ogg is
encoded with Theora encoding. While Firefox and Safari widely supports
.ogg/.ogv format, IE and Chrome supports mostly supports mp4 format. Webm is a
new HTML5 video format supported by most of the browser(Chrome,Opera, Firefox
4+, IE 9.0 and above). So now you different browser supports different
audio/video format for HTML5. Hence the behaviour of HTML5 video may differ
from browser to browser.&amp;nbsp; Hence it is
necessary to add the audio/video type to browser and keep the supported file in
the respective directory.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&amp;nbsp;I will show here, how
add MIME type for videos using addType directive.&lt;/div&gt;
&lt;h1&gt;
Adding HTML5 Audio / Video type &lt;/h1&gt;
&lt;h2&gt;
&amp;nbsp;Video :&amp;nbsp; &lt;/h2&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Add the following &amp;nbsp;lines to&amp;nbsp;
your httpd.conf or .htaccess file to support HTML5 video across most
browser.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
AddType video/mp4 .mp4 .m4v&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
AddType video/ogg .ogv&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
AddType video/webm .webm&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h2&gt;
Audio :&amp;nbsp; &lt;/h2&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Add the following &amp;nbsp;lines to&amp;nbsp;
your httpd.conf or .htacess file to support HTML5 audio across most
browser.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
AddType &amp;nbsp;audio/aac
.aac&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
AddType &amp;nbsp;audio/mp4
.mp4 .m4a&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
AddType &amp;nbsp;audio/ogg
.ogg .oga&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
AddType audio/wav &amp;nbsp;.wav&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
AddType audio/webm &amp;nbsp;.webm&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
After adding this you can now refresh your html5 web page to
play your video/audio on different browser.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Here is the sample HTML5 video code to play video.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkeu0_oM4FYAyiV0y7AMXa0ofQLAXim5WuM0cjZyVZspH1I8YSzD2-ib4Tq9FIdp4m3yeuM9j_hQOlmUx-0J84P7YKYhZq5q198YK60DSMFCFveMk1EfW8mlYS5KwqjUNU7TtNwuV2iNg/s1600/Html5VideoCode.PNG&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; display: inline !important; margin-bottom: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img alt=&quot;Code for HTML5 Video&quot; border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkeu0_oM4FYAyiV0y7AMXa0ofQLAXim5WuM0cjZyVZspH1I8YSzD2-ib4Tq9FIdp4m3yeuM9j_hQOlmUx-0J84P7YKYhZq5q198YK60DSMFCFveMk1EfW8mlYS5KwqjUNU7TtNwuV2iNg/s1600/Html5VideoCode.PNG&quot; height=&quot;73&quot; title=&quot;HTML5 Video&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
While adding the source file make sure the MP4 files comes
first followed by .WebM, .Ogg file. Sometimes few browser creates issue if the
source file are not in proper sequence and you&amp;nbsp;
may got the above error again.&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;form action=&quot;http://www.google.co.in/cse&quot; id=&quot;cse-search-box&quot;&gt;
  &lt;div&gt;
    &lt;input type=&quot;hidden&quot; name=&quot;cx&quot; value=&quot;partner-pub-9669148603845976:qedn6khekoj&quot; /&gt;
    &lt;input type=&quot;hidden&quot; name=&quot;ie&quot; value=&quot;ISO-8859-1&quot; /&gt;
    &lt;input type=&quot;text&quot; name=&quot;q&quot; size=&quot;50&quot; /&gt;
    &lt;input type=&quot;submit&quot; name=&quot;sa&quot; value=&quot;Search&quot; /&gt;
  &lt;/div&gt;
&lt;/form&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;http://www.google.co.in/cse/brand?form=cse-search-box&amp;amp;lang=en&quot;&gt;&lt;/script&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samalpramod.blogspot.com/feeds/670984199206048703/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://samalpramod.blogspot.com/2015/04/no-video-with-supported-format-and-mime.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4234821960632870091/posts/default/670984199206048703'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4234821960632870091/posts/default/670984199206048703'/><link rel='alternate' type='text/html' href='http://samalpramod.blogspot.com/2015/04/no-video-with-supported-format-and-mime.html' title='NO VIDEO WITH SUPPORTED FORMAT AND MIME TYPE FOUND WITH HTML5'/><author><name>samalpramod</name><uri>http://www.blogger.com/profile/10503328453756071691</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkeu0_oM4FYAyiV0y7AMXa0ofQLAXim5WuM0cjZyVZspH1I8YSzD2-ib4Tq9FIdp4m3yeuM9j_hQOlmUx-0J84P7YKYhZq5q198YK60DSMFCFveMk1EfW8mlYS5KwqjUNU7TtNwuV2iNg/s72-c/Html5VideoCode.PNG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4234821960632870091.post-6849266877196309222</id><published>2015-04-06T17:54:00.000+05:30</published><updated>2015-04-06T17:54:05.030+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="mysql"/><category scheme="http://www.blogger.com/atom/ns#" term="MYSQLDUMP"/><title type='text'>BACKUP AND RESTORE MYSQL DATABASE USING MYSQLDUMP</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
There are different ways to backup a mysql database. One of
the command or tool in mysql is mysqldump which is quite easy method to take
backup of a database. It creates a .sql file having Create Database, Create
table and Insert into sql statement. Drop table statement is used before Create
table if the table already exists in the database. The SQL Statement will be
somewhat like the one below.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHIfEh3ASNNoVEFBlmRjsT-wvg3PQEBil-2vrt8Y3hSu7Z_RkOiWkFTAYxSn1KYuyHhR8pHFw7GXFkZta1_apllOpo5D0wUh9XITMds7CY3pxgcIwKk4jlxCvctI-h84ZspK3uBy6gCeY/s1600/Drop_Create_Insert_Sql_Statment.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHIfEh3ASNNoVEFBlmRjsT-wvg3PQEBil-2vrt8Y3hSu7Z_RkOiWkFTAYxSn1KYuyHhR8pHFw7GXFkZta1_apllOpo5D0wUh9XITMds7CY3pxgcIwKk4jlxCvctI-h84ZspK3uBy6gCeY/s1600/Drop_Create_Insert_Sql_Statment.png&quot; height=&quot;217&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;!--[endif]--&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Using mysql you can backup a database from one server and restore
the database on a different server. &lt;/div&gt;
&lt;h1&gt;
Backup Database&lt;/h1&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
For backing up the database you can use the following
command.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;b&gt;$ mysqldump –u root –p
password [DB Name] &amp;gt; DBName.sql;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
If the database size is huge then you can use the zip file
to compress the .sql file and take the backup.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;b&gt;$mysqldump &amp;nbsp;–u root –p password [DB Name] | gzip &amp;nbsp;&amp;gt; DBName.sql.gz;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
DB Name here is the database name for which backup is
taken.&amp;nbsp; If you want to take backup of all
databases then you can use the following command.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;b&gt;$mysqldump –u root –p
password &amp;nbsp;--all-databases | gzip &amp;gt; alldatabase.sql.gz;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;
&lt;h1&gt;
Restore Databse&lt;/h1&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
To restore a single database use the following command&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;b&gt;$mysql -u root –p password
[DB Name] &amp;lt; DBName.sql;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Restoring a database from compressed .sql file &lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
$&lt;b&gt;gzip &amp;lt; DBName.sql.gz
| mysql -uroot –p password [DB Name];&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Restoring all database from a compressed zip file&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
$&lt;b&gt;gzip &amp;lt; alldatabase.sql.gz
| mysql -uroot –p password ;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Note : Make sure the database .sql file is in&amp;nbsp; the current directory while restoring the
database, otherwise mention the .sql file with full path while restoring the
database.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;

&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
To know more about &lt;a href=&quot;http://dev.mysql.com/doc/refman/5.6/en/mysqldump.html&quot;&gt;mysqldump&lt;/a&gt;
command option click &lt;a href=&quot;http://dev.mysql.com/doc/refman/5.6/en/mysqldump.html&quot;&gt;here&lt;/a&gt;.&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;form action=&quot;http://www.google.co.in/cse&quot; id=&quot;cse-search-box&quot;&gt;
  &lt;div&gt;
    &lt;input type=&quot;hidden&quot; name=&quot;cx&quot; value=&quot;partner-pub-9669148603845976:qedn6khekoj&quot; /&gt;
    &lt;input type=&quot;hidden&quot; name=&quot;ie&quot; value=&quot;ISO-8859-1&quot; /&gt;
    &lt;input type=&quot;text&quot; name=&quot;q&quot; size=&quot;50&quot; /&gt;
    &lt;input type=&quot;submit&quot; name=&quot;sa&quot; value=&quot;Search&quot; /&gt;
  &lt;/div&gt;
&lt;/form&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;http://www.google.co.in/cse/brand?form=cse-search-box&amp;amp;lang=en&quot;&gt;&lt;/script&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://samalpramod.blogspot.com/feeds/6849266877196309222/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://samalpramod.blogspot.com/2015/04/backup-and-restore-mysql-database-using.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4234821960632870091/posts/default/6849266877196309222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4234821960632870091/posts/default/6849266877196309222'/><link rel='alternate' type='text/html' href='http://samalpramod.blogspot.com/2015/04/backup-and-restore-mysql-database-using.html' title='BACKUP AND RESTORE MYSQL DATABASE USING MYSQLDUMP'/><author><name>samalpramod</name><uri>http://www.blogger.com/profile/10503328453756071691</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHIfEh3ASNNoVEFBlmRjsT-wvg3PQEBil-2vrt8Y3hSu7Z_RkOiWkFTAYxSn1KYuyHhR8pHFw7GXFkZta1_apllOpo5D0wUh9XITMds7CY3pxgcIwKk4jlxCvctI-h84ZspK3uBy6gCeY/s72-c/Drop_Create_Insert_Sql_Statment.png" height="72" width="72"/><thr:total>0</thr:total></entry></feed>