PDA

View Full Version : کمک در مورد web service



rezatashtboland
سه شنبه 18 خرداد 1389, 05:06 صبح
سلام دوستان
من یک web service نوشتم و در tomcat اجرا میکنم. متدی توی این web service یک string میگیره و توی دیتا بیس ذخیره میکنه .این متد یک object رو میگره و در دیتا بیس ذخیره میکنه . حالا اگه این string که اطلاعات یک object و تشکیل میده به وسیله خود web service به متد داده بشه به طور کامل انجام میشه . از طرفی string ی هم که از طرف servlet به سمت web service میاد به طور صحیح میرسه . ولی از این طریق در محلی که کلاس Bean برای set کردن متد ها فراخوانی میشه برنامه error میده .
برنامه توی ساخت object ی از کلاس Person , ارور میده



private static void setData(String fname, String lname, String age, String code, String gen) {

Person p=new Person();

p.setFirstName(fname);
p.setLastName(lname);
p.setAge(age);
p.setCode(code);
p.setGender(gen);

PersonDBINF persondb = (PersonDBINF) DBFactory.getdb("PersonService");
persondb.addPerson(p);

}





Exeption


log4j:WARN No appenders could be found for logger (org.apache.axis.components.threadpool.TaskManager Factory).
log4j:WARN Please initialize the log4j system properly.

AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: java.lang.reflect.InvocationTargetException
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}hostname:Reza-PC

java.lang.reflect.InvocationTargetException
at org.apache.axis.message.SOAPFaultBuilder.createFau lt(SOAPFaultBuilder.java:223)
at org.apache.axis.message.SOAPFaultBuilder.endElemen t(SOAPFaultBuilder.java:130)
at org.apache.axis.encoding.DeserializationContext.en dElement(DeserializationContext.java:1087)
at com.sun.org.apache.xerces.internal.parsers.Abstrac tSAXParser.endElement(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumen tFragmentScannerImpl.scanEndElement(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumen tFragmentScannerImpl$FragmentContentDriver.next(Un known Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumen tScannerImpl.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocum entScannerImpl.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumen tFragmentScannerImpl.scanDocument(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Co nfiguration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Co nfiguration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XMLPars er.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.Abstrac tSAXParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserI mpl$JAXPSAXParser.parse(Unknown Source)
at javax.xml.parsers.SAXParser.parse(Unknown Source)
at org.apache.axis.encoding.DeserializationContext.pa rse(DeserializationContext.java:227)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPar t.java:695)
at org.apache.axis.Message.getSOAPEnvelope(Message.ja va:435)
at org.apache.axis.transport.http.HTTPSender.readFrom Socket(HTTPSender.java:807)
at org.apache.axis.transport.http.HTTPSender.invoke(H TTPSender.java:144)
at org.apache.axis.strategies.InvocationStrategy.visi t(InvocationStrategy.java:32)
at org.apache.axis.SimpleChain.doVisiting(SimpleChain .java:118)
at org.apache.axis.SimpleChain.invoke(SimpleChain.jav a:83)
at org.apache.axis.client.AxisClient.invokeTransport( AxisClient.java:150)
at org.apache.axis.client.AxisClient.invoke(AxisClien t.java:289)
at org.apache.axis.client.Call.invokeEngine(Call.java :2838)
at org.apache.axis.client.Call.invoke(Call.java:2824)
at org.apache.axis.client.Call.invoke(Call.java:2501)
at org.apache.axis.client.Call.invoke(Call.java:2424)
at org.apache.axis.client.Call.invoke(Call.java:1835)
at org.reza.core.GetRequestSoapBindingStub.getData(Ge tRequestSoapBindingStub.java:158)
at org.reza.service.GetPerson.main(GetPerson.java:34)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Nativ e Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Native MethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(De legatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:623)
at com.intellij.rt.execution.application.AppMain.main (AppMain.java:110)

behrooj
سه شنبه 18 خرداد 1389, 11:58 صبح
میشه لطفا Exception Stack Trace مربوط رو قرار بدید که بهتر بشه نظر داد

behrooj
چهارشنبه 19 خرداد 1389, 14:18 عصر
دو پیشنهاد دارم:

اول اینکه Apache Log4J رو برای پروژتون راه بندازید
اجازه بدید Axis با DEBUG لاگ بزنه.
ممکنه اطلاعاتی در مورد دلیل این خطا بیشتر نمودار شه.

نکته-ی اینکه چک کنید که نسخه-ی جاوای شما جدیدتر از
1.5.0_15
باشه

و یه سوال هم دارم که با توجه به این خطا شما از کجا مطمئن هستید که
خطا در زمان ایجاد Person رخ می-ده؟

rezatashtboland
پنج شنبه 20 خرداد 1389, 00:42 صبح
دو پیشنهاد دارم:

اول اینکه Apache Log4J رو برای پروژتون راه بندازید
اجازه بدید Axis با DEBUG لاگ بزنه.
ممکنه اطلاعاتی در مورد دلیل این خطا بیشتر نمودار شه.

نکته-ی اینکه چک کنید که نسخه-ی جاوای شما جدیدتر از
1.5.0_15
باشه

و یه سوال هم دارم که با توجه به این خطا شما از کجا مطمئن هستید که
خطا در زمان ایجاد Person رخ می-ده؟


با تشکر
دوست عزیز با قرار دادن دستور print توی هر سطر مشخص شد که موقع ساختن Object person مشکل ایجاد میشه . دستور Print قبل از ساخت Object توی Tomcat نمایش داده میشه ولی سطر بعد از Object خیر . در کلاس Person هم یک خط Print هست که خطه اوله و اجرا نمیشه.

behrooj
پنج شنبه 20 خرداد 1389, 13:58 عصر
اگر همچنان مشکل وجود داره، میشه کلاس Person هم بگذارید؟
و این که
Apache Log4J رو برای Axis تنظیم کردید؟ شاید لاگ-ها مفیدتر باشن تو سطح DEBUG؟

rezatashtboland
جمعه 21 خرداد 1389, 00:38 صبح
اگر همچنان مشکل وجود داره، میشه کلاس Person هم بگذارید؟
و این که
Apache Log4J رو برای Axis تنظیم کردید؟ شاید لاگ-ها مفیدتر باشن تو سطح DEBUG؟


با سلام خدمت دوست عزیز
مشکل برطرف شد . ایراد مربوط بود به Dependencies
Module Kernel در برنامه من حاوی کلاس Person بود که در موقع ساخت war فایل به همراه پرنامه Compile نمیشد .
از این که برای رفع مشکل من وقت گذاشتی بسیار سپاس گذارم .

rezatashtboland
جمعه 21 خرداد 1389, 06:01 صبح
با سلام خدمت دوستان
یک مشکل جدید پیدا کردم که نمیشه چند پارامتر رو به سمت وب سرویس فرستاد به عنوان پارامتر ورودی یک متد . فقط پارامتر اول دارای مقداره و باقی پارامتر ها null به دست وب سرویس میرسه . البته با کمک ارایه ها این مشکل حل میشه ولی میخام بدونم چطور میشه این مشکل رو بر طرف کرد

behrooj
دوشنبه 24 خرداد 1389, 15:24 عصر
از اونجایی که به نظر میاد به Exceptionی برنخوردید،‌ شاید مشکل طراحی/منطقی باشه تا تکنیکی؟

اگه دوست دارید واسط و پیاده-سازی وب سرویس رو قرار میدید که بشه بیشتر بحث کرد.