jar etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
jar etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

9 Eylül 2014 Salı

MAVEN REPOSITORY JAR EKLEME

Oracle DB jarları yada IBM' e özel jarlar, Kendi yazdığınız utiller,veya webservice clientlarını maven repository sine ekleyerek istediğiniz uygulamada kullanabilirsiniz. Bunun için

mvn install:install-file -Dfile=JARIN-BULUNDUGU-DIZIN\jarAdı.jar -DgroupId=com.KENDI-VERECEGIN-ISIM -DartifactId=JAR-ADI -Dversion=VERSIYONU -Dpackaging=jar

tanımıyla yapabiliriz.

Örneğin : 

Jar ın bulunduğu dizini kopyaladım.

mvn install:install-file -Dfile=C:\PROJELER\NetBeansProjects\maven-batch-programs\target\maven-batch-programs-1.0-SNAPSHOT.jar -DgroupId=com.beytullahc -DartifactId=maven-batch -Dversion=1.0 -Dpackaging=jar

Yukarıdaki script'i cmd de çalıştırmamız yeterli.

SONUÇ :

jarı projeye dahil etmek için ise aşağıdaki dependency tanımını pom.xml e eklemeniz yeterli.

      
            YAZDIGINIZ-GROUPID
            YAZDIGINIZ-ARTIFACTID
            YAZDIGINIZ-VERSION

     



İyi çalışmalar :)

Jar Dosyası Çalıştırma (MAVEN DEPENDENCY PLUGIN)

Farklı kütüphaneler kullandığımız java uygulamalarında projenin bağımlı olduğu jarları görebilmesi için manifest.mf dosyasına yada .sh dosyasında jarlar tanımlanır ve uygulama yada içindeki main class java -jar komutuyla çalıştırılır.

Proje Paket Yapısı



4 Eylül 2014 Perşembe

JAVA SMB/SAMBA Protokolü ile Dosya Transferi(Sadece IP ile Dosya Transferi)

FTP ve SFTP ile dosya aktarımı yapabilmemiz için serverin 22 nolu portunu kullanma yetkimiz olması gerekiyor. Bu tarz durumlarda eğer kullanıcı adı ve şifremiz var ise SMB protokolü ile sadece IP,kullanıcı adı ve şifre  ile server'a bağlanıp dosya aktarımı yada indirme işlemi yapabiliriz. SMB Hakkında kısaca kısaca bilgi vermek gerekirse:

SMB kavramı İngilizce "Server Message Block" kelimelerinin kısaltmasıdır. İlk olarak IBM tarafından kullanılmıştır.

SMB protokolü bir bilgisayarda uygulamaları okuma ve dosyalara yazma ve bir bilgisayar ağı sunucu programlarından hizmet talep etmek için izin veren bir ağ dosya paylaşım protokolüdür.
SMB protokolü TCP / IP protokolü veya diğer ağ protokolleri üstünde kullanılabilir. SMB protokolü, bir uygulama   uzak bir sunucuda dosya veya diğer kaynaklara erişebilir.

Linux tarafında SMB karşılığı SAMBA olarak geçmektedir. Protokol aynı fakat isimler farklıdır. Bizim uygulamamız platform bağımsız çalışaçak. Kodlar aşağıdaki gibidir

 
Maven projesi genel yapısı


3 Eylül 2014 Çarşamba

JAVA ve SFTP ILE REMOTE SERVER DA DOSYA TRANSFER İŞLEMLERİ

Secure FTP (Güvenli Dosya Taşıma Protokolü) , yani SFTP, SSH kullanarak dosya transferi yapan bir dosya aktarım protokolüdür. SSH'ın sağladığı güvenlik özellikleri, FTP'den farklı olarak SFTP'yi güvenli hale getirir.FTP'nin RSA ile güçlendirilmiş halidir. TCP üzerinden çalışır.

Döküman yükleme ve İndirme kodları aşağıdaki gibidir.

1 Eylül 2014 Pazartesi

Xml Parse Java Object(Maven and XSD)

SOAP tabanlı Web Servisler Xml veri tipiyle haberleşme sağlamaktadır. Ayrıca Database tarafından data xml olarak dönebilir,uygulama içerisinde xml oluşturulabilir. Bu tarz işlemlerde IDE Web Servisler için wsdl'i pars eder ve içinden servise ait değişkenleri ve objeleri xsd yardımıyla çıkartır. Uygulamamıza anında dahil eder. Fakat DB'den dönen bir xml düşünün objeye pars etmeniz gerekiyor. Tek tek Stringler içinde boğuşup değişken tiplerini bir birine çevirebilirsiniz....


Yada gelen xml örneğini free xml formatter ile formatlayıp free xsd generator ile xsd'nizi oluşturabilirsiniz. Bundan sonrasını Jax-b methodları sizin için yapıyor. Xml uzunluğu ne olursa olsun 5 dakikada objeniz yada listeniz hazır :) pom.xml'i incelemenizi ayrıca öneririm. Ben Oracle DB için geliştirme yaptım. Proje içerisinde istenen jarları oracle sitesinden indirip maven reponuza eklerseniz uyulama hazır olacaktır. Maalesef jar paylaşamıyoruz. Link  xdb6 jarını indir :)

Kaynak kod aşağıda. İyi çalışmalar.

Java ile Uzak Masaüstü Komut Satırında İşlemler

Bazı durumlarda bir batch program ile server'a bağlanıp belli komutlar çalıştırmamız gerekebilir. Kopyalama, backup alma vb işlemleri otomatize etmenizde faydalı olacaktır.

Aşağıdaki ekran çıktısında linux server'a bağlanıp örnek olarak 'ls' komutunu çalıştırdım. Uygulamayı jar olarakta projenize dahil edebilirsiniz. İşletim sistemi bağımsız olarak kullanabilirsiniz. 

28 Ağustos 2014 Perşembe

Java Mail Api Hk.

MailSender.java

                                                       JAVA MAIL API ISLEMLERI

                          Java ile mail gönderme - Mail Subjectlerini okuma

Mail server host'u mail adresi ve şifre bilgilerinizi ilgili alanlara girmeniz yeterli. Kod ve jarlar için maven projesinin pom.xml'ine ekleyeceğiniz dependency'ler aşağıdaki gibi.

İyi çalışmalar.

>
        >
            >log4j>
            >log4j>
            >1.2.17>
            >jar>
        >
        >
            >javax>
            >javaee-web-api>
            >6.0>
            >provided>
        >
        >
            >javax.mail>
            >mail>
            >1.4.7>
            >jar>
        >
        >
   >org.apache.commons>
   >commons-collections4>
   >4.0>
        >
    >

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Locale;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.mail.FetchProfile;
import javax.mail.Flags;
import javax.mail.Flags.Flag;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.Transport;
import javax.mail.UIDFolder.FetchProfileItem;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.search.FlagTerm;
import org.apache.commons.lang3.StringUtils;

/**
 *
 * @author BeytullahC
 *
 * Simple demonstration of using the javax.mail API.
 *
 * Run from the command line. Please edit the implementation to use correct
 * email addresses and host name.
 */

public final class MailSender {

    public static void main(String... aArguments) {

        try {
            sendMail("senderMailAddress", "password", "smtpHost", new String[]{"toMail1", "toMail2"});
        } catch (Exception ex) {
            Logger.getLogger(MailSender.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public static ArrayList readMailsImap(String host, String mail, String password) throws Exception {
        Properties props = new Properties();
        props.setProperty("mail.store.protocol", "imaps");
        props.setProperty("mail.imaps.ssl.trust", host);
        props.setProperty("mail.imaps.connectionpoolsize", "10");
        try {
            Session session = Session.getInstance(props, null);
            Store store = session.getStore();
            store.connect(host, mail, password);
            Folder inbox = store.getFolder("INBOX");
            inbox.open(Folder.READ_ONLY);
            FetchProfile profile = new FetchProfile();
            profile.add(FetchProfileItem.CONTENT_INFO);
            profile.add("X-mailer");
            Message msg[] = inbox.search(new FlagTerm(
                    new Flags(Flag.SEEN), false));
            ArrayList list = new ArrayList<>();
            SimpleDateFormat formatter2 = new SimpleDateFormat("HH:mm:ss dd/MM/yy", Locale.ENGLISH);
            inbox.fetch(msg, profile);
            for (Message message : msg) {
                Multipart PART = new MimeMultipart();
                MessageDetail detail = new MessageDetail(StringUtils.join(message.getFrom(), ", "), message.getSubject(), formatter2.parse(formatter2.format(message.getSentDate())));
                list.add(detail);
            }
            return list;
        } catch (MessagingException mex) {
            throw new Exception(mex.getMessage());
        }
    }

    public static void sendMail(final String username, final String password, final String host, final String[] toMail) {
        // Recipient's email ID needs to be mentioned.
        String to = StringUtils.join(toMail, ",");
        // Sender's email ID needs to be mentioned
        String from = username;//change accordingly
        // Assuming you are sending email through relay.jangosmtp.net
        Properties props = new Properties();
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.starttls.enable", "true");
        props.put("mail.smtp.host", host);
        props.put("mail.smtp.port", "587");

        // Get the Session object.
        Session session = Session.getInstance(props,
                new javax.mail.Authenticator() {
                    @Override
                    protected PasswordAuthentication getPasswordAuthentication() {
                        return new PasswordAuthentication(username, password);
                    }
                });

        try {
            // Create a default MimeMessage object.
            Message message = new MimeMessage(session);

            // Set From: header field of the header.
            message.setFrom(new InternetAddress(from));

            // Set To: header field of the header.
            message.setRecipients(Message.RecipientType.TO,
                    InternetAddress.parse(to));

            // Set Subject: header field
            message.setSubject("Testing Subject");
            // Now set the actual message
            message.setText("Hello, this is sample for to check send "
                    + "email using JavaMailAPI ");

            // Send message
            Transport.send(message);

            System.out.println("Sent message successfully....");

        } catch (MessagingException e) {
            throw new RuntimeException(e);
        }
    }
}


import java.util.Date;
import javax.xml.bind.annotation.XmlRootElement;

/**
 *
 * @author BeytullahC
 */
@XmlRootElement(name = "messageDetail")
public class MessageDetail {

    public MessageDetail() {
    }

    public MessageDetail(String subject, Date sendDate) {
        this.subject = subject;
        this.sendDate = sendDate;
    }

    public MessageDetail(String from, String subject, Date sendDate) {
        this.from = from;
        this.subject = subject;
        this.sendDate = sendDate;
    }

    private String from;
    private String subject;
    private Date sendDate;


    public String getSubject() {
        return subject;
    }

    public void setSubject(String subject) {
        this.subject = subject;
    }

    public Date getSendDate() {
        return sendDate;
    }

    public void setSendDate(Date sendDate) {
        this.sendDate = sendDate;
    }

    public String getFrom() {
        return from;
    }

    public void setFrom(String from) {
        this.from = from;
    }

}