हाय सब मैं एक वर्ग है एक init-विधिअवैध उपयोग: इस वेब आवेदन उदाहरण पहले से ही रोक दिया गया है
<bean id="appStarter" class="com.myapp.myClass" init-method="init" destroy-method="destroy"/>
myClass एक्सएमएल में परिभाषित किया गया है:
public class myClass{
private Thread t;
public void init() {
t = new Thread() {
@Override
public void run() {
while (true)
try {
doStuff();
Thread.sleep(1000);
} catch (Exception e) {
e.printStackTrace();
}
}
};
t.start();
}
public void destroy() {
t.interrupt();
}
}
जब एप्लिकेशन को इस शुरू होता है धागे ठीक चलते हैं, और सब ठीक काम करता है और कुछ समय बाद मुझे निम्नलिखित अपवाद मिला
INFO: Illegal access: this web application instance has been stopped already. Could not load com.sun.mail.imap.IMAPStore. The eventual following stack trace is caused by an error thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access, and has no functional impact.
java.lang.IllegalStateException
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1273)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
at javax.mail.Session.getService(Session.java:755)
at javax.mail.Session.getStore(Session.java:569)
at javax.mail.Session.getStore(Session.java:531)
at javax.mail.Session.getStore(Session.java:510)
doStuff विधि में:
public void doStuff(){
Session sessioned = Session.getDefaultInstance(System.getProperties(),
null);
Store store = sessioned.getStore("imap");
store.connect(hostName, userName, password);
.
.
.
}
मैं पता नहीं क्यों, किसी भी विचार?
मैं इसे स्थायी रूप से कैसे ठीक कर सकता हूं? इस मुद्दे के लिए मूल कारण क्या है? क्योंकि यह मेरे उत्पादन आवेदन को दुर्घटनाग्रस्त कर रहा है। मैं हर समय सर्वर को पुनरारंभ नहीं करना चाहता ... मदद चाहिए। – vissu
यह दूसरा कर सकता है, टॉमकैट के पुनरारंभ ने समस्या को दूर कर दिया। – Gruber
यह संभवतः एक हॉट डिप्लॉयमेंट समस्या + पहले से ही धागे शुरू कर दिया है, संभवत: अपने धागे नहीं बल्कि तीसरे पक्ष के पुस्तकालयों से। [यहां मेरा जवाब देखें] (http://stackoverflow.com/a/41503819/1075524)। –