суббота, 15 октября 2016 г.

Почтовое сообщение по протоколу SMTP из Java с использованием SSL

Собственно нужно было послать. Из программы. С почтового ящика на Yandex. А Яндекс перешёл на SSL

Что характерно копи-паст из интернета ничего не дал. Все время вылазили исклчючения. Или письма вроде как уходили, но в ящик не приходили.
Полез сюда в раздел Programming на oracle.com. Нашёл вот такое:

Q: What are some of the most common mistakes people make when using JavaMail? A: Unfortunately, the internet is full of copy and paste programmers who don't understand the code they're using, which has resulted in a lot of unnecessarily complex and often incorrect examples. The most common mistakes are:
  • Use of Session.getDefaultInstance. Almost all code should use Session.getInstanceinstead, as described below
  • Calling the send method on a Transport instance variable. As described belowsend is a static method and ignores the Transport instance you use to call it.
  • Setting various socketFactory properties. Long, long ago JavaMail didn't have built in support for SSL connections, so it was necessary to set these properties to use SSL. This hasn't been the case for years; remove these properties and simplify your code. The easiest way to enable SSL support in current versions of JavaMail is to set the property "mail.smtp.ssl.enable" to "true". (Replace "smtp" with "imap" or "pop3" as appropriate.)
  • Using an Authenticator just to supply a username and password. There's really nothing wrong with using an Authenticator, it's just unnecessarily complex. A more straightforward approach is to call the connect method that takes a username and password when connecting to a Store. When sending a message, use the static Transport.send method that takes a username and password.
что характерно, прямо про меня.
Последовал рекомендациям и о чудо все получилось. Приведу функцию полностью как она работает у меня:
    public void sendMail(String paramTo, String paramSubject, String paramBody)
    {
        try
        {
            Properties props = new Properties();
            props.put("mail.smtp.host", "smtp.yandex.ru");
            props.put("mail.smtp.auth", "true");
            props.put("mail.smtp.port", "465");
            props.put("mail.smtp.ssl.enable","true");
            Session session = Session.getInstance(props);
           
            Message message = new MimeMessage(session);
            message.setFrom(new InternetAddress("my_mailbox@yandex.ru"));
            message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(paramTo.trim()));
            message.setContent("This is a test", "text/plain");
            message.setSubject(paramSubject);
            message.setText(paramBody);
            Transport.send(message,"user_name", "user_password");
            System.out.println("Sent message successfully....");
        } catch (Exception mex)
        {
            System.out.println("******* ERROR sending Email *******");
            mex.printStackTrace();
        }
    }
Тащемта всё.



Лучший поставщик комплектующих

воскресенье, 4 сентября 2016 г.

Пропадает подключаемое оборудование в 1С

Собственно, симптомы:


  1. Подключился по RDP; 
  2. Зашёл в 1С (у нас УТ 11); 
  3. Настроил оборудование;
  4. Всё работает;
  5. Вышел из 1С; 
  6. Вышел из RDP сессии;
  7. Снова подключился по RDP;
  8. Зашёл в 1С;

Ан оборудования, то и нет!!!

Всё дело в том, что Windows Server (у нас 2012) все время меняет идентификатор клиента и генерирует новый при каждом новом подключении одного и того же пользователя по RDP. Вылечил в итоге так:

  1. Удалил пользователя Windows Server прямо из консоли lusrmgr.msc;
  2. Удалил папку пользователя в каталоге Users (это больше для красоты, что бы место не занимало);
  3. Создал пользователя заново.

Генерировать новые идентификаторы пользователя сервер перестал.

Причем если просто удалить папку с профилем пользователя не удаляя самого пользователя Windows Server, то ничего не меняется и идентификаторы продолжают генерироваться при каждом новом входе по RDP (хотя, может это только при наших настройках).

Лучший поставщик комплектующих

понедельник, 18 июля 2016 г.

вторник, 3 мая 2016 г.

Имя учетной записи в OIM



Есть на вкладке "Accounts" (Учетые записи) профиля пользователя такой столбец как "Account Name" (Имя учетной записи). Вот при создании очередного коннектора, за каким-то хреном, в этом столбце после реконсиляции нативных учетных записей из целевой системы, появилось ФИО пользователя вместо его логина.
Перерыл все. Понапресоздавал формы в Design Console. Пересоздал формы в консоли администратора. Полез в метаданные. Все как всегда по барабану.
Дело оказалось в настройке "Map Descriptive Field". Этакая незаметная кнопка в форме процесса. При нажатии на нее открывается одноименная форма. Так вот, оказывается, необходимо выделить соответствующее поле в этой  форме в папке "Pocess data for..." и нажать кнопку с дискетой, тем самым сохранив настройки. После этого в поле "Account Name" появляется логин пользователя.

среда, 28 октября 2015 г.

12705: Cannot access NLS data files or invalid environment specified

NetBeans 8.0.2.
Windows 10 x64

При попытке создать соединение через драйвер ojdbc7 появляется ошибка

невозможно соединиться с jdbc:oracle:thin:@localhost:1521:XE с помощью oracle.jdbc.OracleDriver (ORA-00604: error occurred at recursive SQL level 1 ORA-12705: Cannot access NLS data files or invalid environment specified )

В файле

C:\Program Files\NetBeans 8.0.2\etc\netbeans.conf

в строке

netbeans_default_options

в кавычки необходимо добавить опцию

-J-Duser.region=US

Это решает проблему. Если вместо US поставить RU то проблема остаётся.


Похожая проблема при запуске приложения на сервере GlassFish

Severe:   Local Exception Stack:
Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: Error in allocating a connection. Cause: Connection could not be allocated because: ORA-00604: error occurred at recursive SQL level 1
ORA-12705: Cannot access NLS data files or invalid environment specified


Тут она решается правкой конфигурационного файла домена

..\glassfish\domains\domain1\config\domain.xml

в секции

<java-config ="classpath-suffix="" debug-options="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=9009" system-classpath">

нужно вставить опцию

<jvm-options>-Duser.region=US</jvm-options>

и перезапустить сервер


суббота, 3 октября 2015 г.

Планшет DIGMA Plane 9.7 3G 8Gb Wi-Fi, 3G, Android 5.1, белый [ps9770mg]

Купил 1 апреля



Через 3 недели


И понеслось:



Заявление №1

Результат №1

Заявление №2

Результат №2

Заявление №3

Результат №3


вторник, 29 сентября 2015 г.

MS SQL через SQL Developer 4.0.2.15



Как советуют в этих ваших интернетах не получилось. Точнее получилось наполовину.
 
В моем случае нужно так:


  1. Копируем jtds-1.2.jar в папку sqldeveloper\jdbc\lib (как раз этого в интернетах не нашел, а без этого в моем случае не работало);
  2. Tools -> Preferenses -> Database -> Third Party JDBC Driver;
  3. Add Entry;
  4. Указываем файл скопированный на шаге 1;
  5. Select;
  6. Ok;
  7. Перезагружаем SQL Developer;
  8. Хоп! Ла-лай-лай! В свойствах соединений появилась вкладка SQLServer.
 


Барахолка в Железнодорожном

Лучший поставщик комплектующих