معرفی

All posts tagged معرفی

نحوه اتصال وب لاجیک به سایتهایی که SSL هستند

سلام در این بلاگ قصد دارم نحوه اتصال وب لاجیک به سایتهایی که SSL هستند را توضیح بدهم.
اگر قصد دارید که مثلاً در داخل یک برنامه مانند JSF یا ADF به وب سایت بانک پاسارگاد متصل شوید تا از نتیجه تراکنش مطلع گردید با یک HTTPClient ساده نمیتوانید این موضوع را حل نمایید زیرا وب لاجیک امکان اتصال را به شما نمیدهد برای این منظور باید فایل crt وب سایت امن را در داخل وب لاجیک وارد نمایید تا یک لینک trust بین سرور ها ایجاد گردد.
مرحله اول گرفتن فایل crt از وب سابت میباشد در تصاویر زیر من نحوه گرفتن فایل را از یک وب سایت نمونه مانند سایت بانک پاسارگاد نمایش داده ام.
مراحل زیر را به ترتیب انجام دهید تا فایل certificate دانلود گردد برای این منظور من از Firefox استفاده کرده ام.
سایت بانک پاسارگاد برای چک کردن وضعیت پرداخت: https://fanapepay.bpi.ir/checktransactionresult.aspx

پس از ذخیره فایل به مسیر jdk مربوط به middleware home بروید در کامپیوتر من این مسیر معادل D:\Oracle\Middleware\jdk160_24\bin
و فایل گرفته شده pasargad.pem را در آن فلدر ذخیره نمایید.
سپس به command prompt رفته و کدهای زیر را به ترتیب اجرا نمایید.

در این مرحله کلمه عبور برابر است با:DemoTrustKeyStorePassPhrase

در این مرحله برای سوال پرسیده شده کلمه yes را وارد نمایید.

حال وب لاجیک به راحتی میتواند به سابت SSL متصل گردد.
کد ارسال و نمونه برنامه در پیوست وجود دارد.

نمونه کد نوشته شده در managed bean برای ارسال کد به سایت پاسارگاد و خواندن جواب بازگشت

package view;<br />
import java.io.BufferedReader;<br />
import java.io.DataOutputStream;<br />
import java.io.InputStreamReader;<br />
import java.net.HttpURLConnection;<br />
import java.net.URL;</p>
<p>import java.security.cert.X509Certificate;</p>
<p>import javax.net.ssl.HttpsURLConnection;<br />
import javax.net.ssl.SSLContext;<br />
import javax.net.ssl.TrustManager;<br />
import javax.net.ssl.X509TrustManager;</p>
<p>public class MyClass {</p>
<p>private final String USER_AGENT = "Mozilla/5.0";</p>
<p>public static void main(String[] args) throws Exception {</p>
<p>MyClass http = new MyClass();</p>
<p>System.out.println("\nTesting 1 - Send Https POST request");<br />
http.postAction();<br />
System.out.println("\nTesting 2 - After Send Https POST request");</p>
<p>}</p>
<p>public String postAction() throws Exception {<br />
// Create a trust manager that does not validate certificate chains<br />
TrustManager[] trustAllCerts = new TrustManager[]{<br />
new X509TrustManager() {<br />
public java.security.cert.X509Certificate[] getAcceptedIssuers() {<br />
return null;<br />
}<br />
public void checkClientTrusted(<br />
java.security.cert.X509Certificate[] certs, String authType) {<br />
}<br />
public void checkServerTrusted(<br />
java.security.cert.X509Certificate[] certs, String authType) {<br />
}<br />
}<br />
};</p>
<p>// Install the all-trusting trust manager<br />
try {<br />
SSLContext sc = SSLContext.getInstance("SSL");<br />
sc.init(null, trustAllCerts, new java.security.SecureRandom());<br />
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());<br />
} catch (Exception e) {<br />
System.out.println(e.getMessage());<br />
e.printStackTrace();<br />
}<br />
String url = "https://fanapepay.bpi.ir/checktransactionresult.aspx";<br />
URL obj = new URL(url);<br />
weblogic.net.http.SOAPHttpsURLConnection con = (weblogic.net.http.SOAPHttpsURLConnection) obj.openConnection();</p>
<p>//add reuqest header<br />
con.setRequestMethod("POST");<br />
con.setRequestProperty("User-Agent", USER_AGENT);<br />
con.setRequestProperty("Accept-Language", "en-US,en;q=0.5");</p>
<p>String urlParameters ="invoiceUID=6352140483062587301";</p>
<p>// Send post request<br />
con.setDoOutput(true);<br />
DataOutputStream wr = new DataOutputStream(con.getOutputStream());<br />
wr.writeBytes(urlParameters);<br />
wr.flush();<br />
wr.close();</p>
<p>int responseCode = con.getResponseCode();<br />
System.out.println("\nSending 'POST' request to URL : " + url);<br />
System.out.println("Post parameters : " + urlParameters);<br />
System.out.println("Response Code : " + responseCode);</p>
<p>BufferedReader in = new BufferedReader(<br />
new InputStreamReader(con.getInputStream()));<br />
String inputLine;<br />
StringBuffer response = new StringBuffer();</p>
<p>while ((inputLine = in.readLine()) != null) {<br />
response.append(inputLine);<br />
}<br />
in.close();</p>
<p>//print result<br />
System.out.println(response.toString());<br />
return null;<br />
}<br />
}

firefox-step1.png

%D9%84%DB%8C%D8%B3%D8%AA %D8%B3%D9%88%D8%A7%D9%84%D8%A7%D8%AA - نحوه اتصال وب لاجیک به سایتهایی که SSL هستند

firefox-step2.png

%D9%84%DB%8C%D8%B3%D8%AA %D8%B3%D9%88%D8%A7%D9%84%D8%A7%D8%AA - نحوه اتصال وب لاجیک به سایتهایی که SSL هستند

%D9%84%DB%8C%D8%B3%D8%AA %D8%B3%D9%88%D8%A7%D9%84%D8%A7%D8%AA - نحوه اتصال وب لاجیک به سایتهایی که SSL هستند

%D9%84%DB%8C%D8%B3%D8%AA %D8%B3%D9%88%D8%A7%D9%84%D8%A7%D8%AA - نحوه اتصال وب لاجیک به سایتهایی که SSL هستند

%D9%84%DB%8C%D8%B3%D8%AA %D8%B3%D9%88%D8%A7%D9%84%D8%A7%D8%AA - نحوه اتصال وب لاجیک به سایتهایی که SSL هستند

%D9%84%DB%8C%D8%B3%D8%AA %D8%B3%D9%88%D8%A7%D9%84%D8%A7%D8%AA - نحوه اتصال وب لاجیک به سایتهایی که SSL هستند

%D9%84%DB%8C%D8%B3%D8%AA %D8%B3%D9%88%D8%A7%D9%84%D8%A7%D8%AA - نحوه اتصال وب لاجیک به سایتهایی که SSL هستند

خواندن بیشتر
royal visionنحوه اتصال وب لاجیک به سایتهایی که SSL هستند

تضمین کیفیت تولید نرم افزار با معماری نرم افزار

معماری نرم افزار یا همان Software Architecture به مکانیزمی گفته میشود که بر اساس آن قبل از شروع به تولید نرم افزار نقشه راه یا همان Roadmap مسیر تولید سامانه مشخص گردد و دقیقا وظیفه همان مدل معماری ساختمان را قبل از شروع به ساخت آن ایفا میکند. در بسیاری از تولیدات نرم افزاری تکیه اصلی شرکتها به انتخاب تکنولوژی یا ویژگی های لازم برای نرم افزار است در حالیکه این موضوع باید بعد از انتخاب معماری صورت گیرد همانگونه که در ساخت یک بنا ابتدا معماری آن را ترسیم میکنند سپس به لوازم جانبی مانند کابینت، کاشی یا پارکت توجه میکنند و اگر غیر از این باشد موضوع غیر منطقی به نظر میرسد این در حالیست که در نرم افزار به علت اینکه موضوع نرم افزار قابل مشاهده نیست معماری آن هم عموماً به فراموشی سپرده میشود و بدون داشتن معماری کلان برای آن شروع به انتخاب ابزار که همان کاشی و سرامیک در زمینه ساختمان است مینماییم.
در معماری نرم افزار تاکید بر نیازمندیهای واقعی کارفرما و پیدا کردن بهینه ترین روش برای رسیدن به راهکاری است که نیازمندیهای فعلی و مهمتر از آن نیازهای آتی کارفرما را پاسخ بدهد.
در معماری نرم افزار به مواردی کلی و زیر ساختی توجه میگردد که برخی از آنها در زیر لیست شده است مانند :
• انتخاب معماری های پذیرفته شده نرم افزاری مانند معماری سرویس گرا یا بر پایه فرآیند
• آنالیز و نیاز سنجی کارفرما
• اتخاذ چارچوب برای تست کد های تولید گردیده
• استاندارد های کد نویسی و انتخاب تکنولوژی های استاندارد
• چیدمان لایه های لازم برای نرم افزار، ارتباط بین لایه ها و استاندارد های هر لایه
• مسایل مهمی مانند طراحی ماژولار برنامه، امنیت و سرعت پاسخ دهی
• چیدمان تیم فنی و نقش های لازم در تیم تولید و طراحی نرم افزار
• یکپارچگی بین ماژولهای ایجاد گردیده
• یکدست بودن کد های ایجاد گردیده تا انتقال برنامه از یک فرد به فرد دیگر راحت و امکانپذیر باشد .
• استفاده از الگوهای برنامه نویسی Best Practice & Patterns ) )
در حالیکه در حال حاضر در بسیاری از شرکتهای فعال در حوزه فن آوری اهمیت Software Architecture خیلی پررنگ نمیباشد ولی تیم اجرایی رویال ویژن سرعت و دقت توسعه تیم خود را مدیون معماری نرم افزاری است که در ظرف 2 سال گذشته به کمک متخصصان اوراکل در کشورهای متعدد تحت نام GIEA شکل گرفته است و این نکته درخور توجه است که با وجود اینکه رویال ویژن برای بیش از دهها شرکت مختلف، نرم افزار توسعه داده ولی تمام این نرم افزارها از لحاظ ظاهر و عملکرد به یکدیگر شبیه میباشند زیرا بر اساس یک اصول مهندسی و معماری نرم افزار بنا نهاده شده اند. این معماری نه تنها به معماری شرکت اوراکل بسیار نزدیک است بلکه نیازمندیهای کارفرمایان گوناگون را نیز پوشش میدهد .
معماری نرم افزار برای هر شرکت به صورت انحصاری تهیه و تدوین میگردد تا بتواند نیازمندیهای هریک را پاسخ بدهد ولی اصول اولیه آن همان اصول نرم افزار شرکت اوراکل میباشد که تحت نام OEA و OUM در سایت اوراکل منابع اطلاعاتی گوناگونی برای ان وجود دارد .

خواندن بیشتر
royal visionتضمین کیفیت تولید نرم افزار با معماری نرم افزار