PDA

View Full Version : حرفه ای: war فايل



reza62heydari
پنج شنبه 21 شهریور 1392, 13:08 عصر
با سلام خدمت همه دوستان
يه سئوالي داشتم: آيا امكان بدست آوردن سورس نرم افزار از روي war فايل وجود دارد؟ نرم افزاري هست كه اينكار را انجام بدهد؟ (پروژه هاي ديپلوي شده رو اپليكيشن سرور)
مخلص همه شما

cups_of_java
پنج شنبه 21 شهریور 1392, 18:30 عصر
فایل های کلاسی که توی وار فایله هست رو می تونید با Java Decompilerهای موجود تبدیل به سورس کنید...

reza62heydari
جمعه 22 شهریور 1392, 10:49 صبح
فایل های کلاسی که توی وار فایله هست رو می تونید با Java Decompiler های موجود تبدیل به سورس کنید...
نرم افزارش رو كجا ميتونم دانلود كنم؟؟؟
گزارشاتي كه توي سيستم هستش رو هم ميتونم سورسش رو بدست بيارم؟
يه توضيحي كلي در اين زمينه(بدست آوردن سورس) از روي warفايل ميدين.

Ehsan rashydy
جمعه 22 شهریور 1392, 15:41 عصر
یکی از برنامه ها مثلا Dj java decompiler هست،
هر war فایل یه فولدر WEB-INF داره که تو این یه فولدر دیگه به اسم classes هست، سورس های کامپایل شده توی این فولدر قرار گرفتن،

خیلی راحت هم میتونی با این برنامه decompile کنیشون،

در مورد گزارش ها هم اگه با یه فریمورک گزارش گیری مثل jasper report کار کرده باشن، بله میتونید.

reza62heydari
شنبه 23 شهریور 1392, 08:25 صبح
یکی از برنامه ها مثلا Dj java decompiler هست،
هر war فایل یه فولدر WEB-INF داره که تو این یه فولدر دیگه به اسم classes هست، سورس های کامپایل شده توی این فولدر قرار گرفتن،

خیلی راحت هم میتونی با این برنامه decompile کنیشون،

در مورد گزارش ها هم اگه با یه فریمورک گزارش گیری مثل jasper report کار کرده باشن، بله میتونید.


jasper report كار كردم تا حدودي ميدونم ولي يه موردي كه هست گزارشات رو بدون query مياره يعني گزارشات سيستم query هاشو نميتونم ببينم!!! چيكار بايد بكنم؟؟؟
ممنونم

Ehsan rashydy
شنبه 23 شهریور 1392, 08:54 صبح
jasper report كار كردم تا حدودي ميدونم ولي يه موردي كه هست گزارشات رو بدون query مياره يعني گزارشات سيستم query هاشو نميتونم ببينم!!! چيكار بايد بكنم؟؟؟
ممنونم

این حالت های مختلف داره،
اگه واسه بیرون کشیدن اطلاعات از DB، از Stored Procedure استفاده کرده باشن و شما به سرور DB دسترسی نداشته باشی، queryها رو نمیتونی ببینی،

واسه حالتهای دیگه هم کدتونو بزارید ببینیم.

reza62heydari
شنبه 23 شهریور 1392, 09:55 صبح
این حالت های مختلف داره،
اگه واسه بیرون کشیدن اطلاعات از DB، از Stored Procedure استفاده کرده باشن و شما به سرور DB دسترسی نداشته باشی، queryها رو نمیتونی ببینی،

واسه حالتهای دیگه هم کدتونو بزارید ببینیم.

ازStored Procedure استفاده نشده- توي محيط jasper همه ي query هاشو نوشتن.
چكار بايد بكنم؟؟؟
ممنونم

Ehsan rashydy
شنبه 23 شهریور 1392, 10:29 صبح
ازStored Procedure استفاده نشده- توي محيط jasper همه ي query هاشو نوشتن.
چكار بايد بكنم؟؟؟
ممنونم

فرض میکنم که بدون استفاده از هیچ ORMای به DB وصل میشید
و اینکه مثلا قراره به mysql وصل شید.

شما یه جای باید با کلاس java.sql.DriverManager و متد getConnection یه آبجک java.sql.Connection بدست بیارید اینطوری :


Connection connection = DriverManager.getConnection ("jdbc:mysql://localhost:3306/YOUR_DATABASE?user=USER_NAME&password=PASS_WORD");

بعد با استفاده از این آبجکت و یه آبجکت از کلاسهای
java.sql.Statement یا
java.sql.PreparedStatement یا
java.sql.CallableStatement
میتونید query هاتون رو اجرا کنید، اینطوری(با Statement تست میکنیم):


Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(query);


بعد از این برای اینکه بتونی از آبجکت resultset برای تولید گزارشها استفاده کنی اینکاری میکنی:



JRResultSetDataSource resultSetDataSource = new JRResultSetDataSource(resultSet);
JasperFillManager.fillReportToFile("reports/DbReportDS.jasper", new HashMap(), resultSetDataSource);

تو خط اول داری یه DataSource از روی resultset درست میکنی که بتونی بفرستیش به فایل jrxml و ازش استفاده کنی،
تو خط دوم هم داری گزارش رو تولید میکنی، آرگومانهای متد fillReportToFile به ترتیب از چپ به راست اینان:
اولی: میشه فایل jrxml، این که مشخصه
دومی: یه سری پارامتری که با datasource نمیتونی بفرستی رو در قالب یه آبجکت map میفرستی.
سومی: اینم میشه datasource عملاهمونی که با query زدن از DB گرفتی، فقط تو قالب یه آبجکت دیگه فرستاده میشه(JRResultSetDataSource)



آخرسر اینو بگم که شما باید بگردی دنبال اون query که با آبجکت statement اجرا میشه.

reza62heydari
شنبه 23 شهریور 1392, 11:36 صبح
یکی از برنامه ها مثلا Dj java decompiler هست،
هر war فایل یه فولدر WEB-INF داره که تو این یه فولدر دیگه به اسم classes هست، سورس های کامپایل شده توی این فولدر قرار گرفتن،

خیلی راحت هم میتونی با این برنامه decompile کنیشون،

در مورد گزارش ها هم اگه با یه فریمورک گزارش گیری مثل jasper report کار کرده باشن، بله میتونید.

خب من همه ي كلاس فايل هاي داخل web-inf رو تبديل كردم- حالا يه سوال ديگه : يه سري فايل jsp هم پروژه داره نياز هست تا آنها رو هم تبديل كنم؟ اگه بايد تبديل بشه نرم افزار ديگه اي لازم هست؟
ممنونم

Ehsan rashydy
شنبه 23 شهریور 1392, 11:53 صبح
خب من همه ي كلاس فايل هاي داخل web-inf رو تبديل كردم- حالا يه سوال ديگه : يه سري فايل jsp هم پروژه داره نياز هست تا آنها رو هم تبديل كنم؟ اگه بايد تبديل بشه نرم افزار ديگه اي لازم هست؟
ممنونم

نه، jspها رو دیگه لازم نیست decompile کنی،
jsp ها تو rutime کامپایل میشن، request که براشون میاد، اول تبدیل میشن به servlet بعد کامپایل و اجرا میشن.

reza62heydari
شنبه 23 شهریور 1392, 15:26 عصر
فرض میکنم که بدون استفاده از هیچ ORMای به DB وصل میشید
و اینکه مثلا قراره به mysql وصل شید.

شما یه جای باید با کلاس java.sql.DriverManager و متد getConnection یه آبجک java.sql.Connection بدست بیارید اینطوری :


Connection connection = DriverManager.getConnection ("jdbc:mysql://localhost:3306/YOUR_DATABASE?user=USER_NAME&password=PASS_WORD");

بعد با استفاده از این آبجکت و یه آبجکت از کلاسهای
java.sql.Statement یا
java.sql.PreparedStatement یا
java.sql.CallableStatement
میتونید query هاتون رو اجرا کنید، اینطوری(با Statement تست میکنیم):


Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(query);


بعد از این برای اینکه بتونی از آبجکت resultset برای تولید گزارشها استفاده کنی اینکاری میکنی:



JRResultSetDataSource resultSetDataSource = new JRResultSetDataSource(resultSet);
JasperFillManager.fillReportToFile("reports/DbReportDS.jasper", new HashMap(), resultSetDataSource);

تو خط اول داری یه DataSource از روی resultset درست میکنی که بتونی بفرستیش به فایل jrxml و ازش استفاده کنی،
تو خط دوم هم داری گزارش رو تولید میکنی، آرگومانهای متد fillReportToFile به ترتیب از چپ به راست اینان:
اولی: میشه فایل jrxml، این که مشخصه
دومی: یه سری پارامتری که با datasource نمیتونی بفرستی رو در قالب یه آبجکت map میفرستی.
سومی: اینم میشه datasource عملاهمونی که با query زدن از DB گرفتی، فقط تو قالب یه آبجکت دیگه فرستاده میشه(JRResultSetDataSource)



آخرسر اینو بگم که شما باید بگردی دنبال اون query که با آبجکت statement اجرا میشه.

نتونستم query هاشو پيدا كنم!!!! توي class فايل ها چيزي نبود!!!

reza62heydari
دوشنبه 25 شهریور 1392, 08:44 صبح
نتونستم query هاشو پيدا كنم!!!! توي class فايل ها چيزي نبود!!!


يه مورد از گزارشات سيستم رو بزارم برام چك ميكنيد؟ ايميلتون رو بنويسيد
ممنونم

reza62heydari
دوشنبه 25 شهریور 1392, 16:59 عصر
يه مورد از گزارشات سيستم رو بزارم برام چك ميكنيد؟ ايميلتون رو بنويسيد
ممنونم

اگه query هاي يه برنامه j2ee در داخل jasper report نباشه و از store proc نيز استفاده نشده باشه query ها رو در برنامه داخل چه فايلي قرار ميدن؟؟؟ پسوند فايل چي مشه؟؟؟
ممنونم