काम नहीं करता है हम हाइबरनेट सत्यापनकर्ता और गतिशील रूप से क्लास लोडिंग का उपयोग हमारी परियोजना में (भार वर्ग द्वारा एक अलग वर्ग-लोडर में) करते हैं। हमें यह समझने के बाद कि कक्षा की आवश्यकता नहीं है हम कक्षा और कक्षा लोडर के सभी संदर्भों को हटा दें, फिर जीसी इसे एकत्र करता है।जावा 8 प्रतिबिंब
हमें क्या मिलता है: एप्लिकेशन शुरू होने के कुछ समय बाद जावा प्रतिबिंब काम करना बंद कर देता है।
java.lang.reflect.UndeclaredThrowableException: null
at com.sun.proxy.$Proxy253.equals(Unknown Source)
at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintValidatorManager$CacheKey.equals(ConstraintValidatorManager.java:287)
at java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:940)
at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintValidatorManager.getInitializedValidator(ConstraintValidatorManager.java:104)
at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.getConstraintValidatorNoUnwrapping(ConstraintTree.java:301)
at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.getConstraintValidatorInstanceForAutomaticUnwrapping(ConstraintTree.java:242)
at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.getInitializedConstraintValidator(ConstraintTree.java:163)
at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.validateConstraints(ConstraintTree.java:116)
at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.validateComposingConstraints(ConstraintTree.java:396)
at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.validateConstraints(ConstraintTree.java:98)
at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.validateConstraints(ConstraintTree.java:87)
at org.hibernate.validator.internal.metadata.core.MetaConstraint.validateConstraint(MetaConstraint.java:73)
at org.hibernate.validator.internal.engine.ValidatorImpl.validateMetaConstraint(ValidatorImpl.java:616)
at org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraint(ValidatorImpl.java:581)
at org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraintsForSingleDefaultGroupElement(ValidatorImpl.java:527)
at org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraintsForDefaultGroup(ValidatorImpl.java:495)
at org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraintsForCurrentGroup(ValidatorImpl.java:460)
at org.hibernate.validator.internal.engine.ValidatorImpl.validateInContext(ValidatorImpl.java:410)
at org.hibernate.validator.internal.engine.ValidatorImpl.validate(ValidatorImpl.java:207)
at org.springframework.validation.beanvalidation.SpringValidatorAdapter.validate(SpringValidatorAdapter.java:281)
... Many spring filters calls ...
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.multipart.support.MultipartFilter.doFilterInternal(MultipartFilter.java:122)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at *someAwesomePackage*.microservice.rest.spring.webapp.CabinetRequestFilter.doFilterInternal(CabinetRequestFilter.java:98)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.reflect.InvocationTargetException: null
at sun.reflect.GeneratedMethodAccessor268.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.hibernate.validator.internal.util.annotationfactory.AnnotationProxy.invoke(AnnotationProxy.java:69)
... 260 common frames omitted
Caused by: java.lang.NullPointerException: null
at org.hibernate.validator.internal.util.annotationfactory.AnnotationProxy.getAnnotationMemberValue(AnnotationProxy.java:248)
at org.hibernate.validator.internal.util.annotationfactory.AnnotationProxy.equals(AnnotationProxy.java:104)
... 264 common frames omitted
त्रुटि इस स्थान में होता है (java.lang.Class.java से विधि):
private static Method searchMethods(Method[] methods,
String name,
Class<?>[] parameterTypes) {
Method res = null;
String internedName = name.intern();
for (int i = 0; i < methods.length; i++) {
Method m = methods[i];
if (m.getName() == internedName
&& arrayContentsEq(parameterTypes, m.getParameterTypes())
&& (res == null
|| res.getReturnType().isAssignableFrom(m.getReturnType())))
res = m;
}
return (res == null ? res : getReflectionFactory().copyMethod(res));
}
कक्षा विधि है, लेकिन m.getName() == internedName
की तुलना गलत है। तुलना झूठी वापसी करती है क्योंकि विधियों के नाम इंटर्न नहीं किए जाते हैं।
यदि मैं डीबग से m.getName(). Intern() == internedName
पर कॉल करता हूं, तो यह सच हो जाता है। लेकिन विधि 'searchMethods' 'java.lang.Class' से है।
एप्लिकेशन शुरू होने से कुछ समय बाद यह हमेशा होता है।
क्या किसी को ऐसी समस्या का सामना करना पड़ा?
संपादित करें (25/12/2017):
इतना ही नहीं हाइबरनेट सत्यापनकर्ता विफल रहा है, XML पार्सिंग भी विफल रहा!
एक्सएमएल उदाहरण:
<SELFCARE>
<SESSION_ID>***</SESSION_ID>
</SELFCARE>
मानचित्रण उदाहरण:
@XmlRootElement(name = "SELFCARE")
@XmlAccessorType(XmlAccessType.FIELD)
public class Session {
@XmlElement(name = "SESSION_ID")
private String sessionId;
}
पार्स अपवाद:
WARN 2017.12.25 20:00:05.991 +0300 org.apache.cxf.jaxrs.provider.AbstractJAXBProvider javax.xml.bind.UnmarshalException
- with linked exception:
[com.sun.istack.SAXParseException2; lineNumber: 1; columnNumber: 1; unexpected element (uri:"", local:"SELFCARE"). Expected elements are <{}SELFCARE>]
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.handleStreamException(UnmarshallerImpl.java:483)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:417)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:386)
at org.apache.cxf.jaxrs.provider.JAXBElementProvider.unmarshalFromInputStream(JAXBElementProvider.java:294)
at org.apache.cxf.jaxrs.provider.JAXBElementProvider.doUnmarshal(JAXBElementProvider.java:245)
लेकिन अगर प्रतिबिंब काम कर रहा है मानचित्रण, सही और काम कर रहा है ...
क्या आपने m.getName() को प्रशिक्षित किया था। Intern() == internedName? दस्तावेज़ीकरण से: जब आंतरिक विधि लागू की जाती है, यदि पूल में पहले से ही स्ट्रिंग ऑब्जेक्ट के बराबर एक स्ट्रिंग होती है जो बराबर (ऑब्जेक्ट) विधि द्वारा निर्धारित की जाती है, तो पूल से स्ट्रिंग वापस कर दी जाती है। अन्यथा, यह स्ट्रिंग ऑब्जेक्ट पूल में जोड़ा जाता है और इस स्ट्रिंग ऑब्जेक्ट का संदर्भ वापस कर दिया जाता है। यह इस प्रकार है कि किसी भी दो तारों के लिए एस और टी, s.intern() == t.intern() सत्य है अगर केवल और यदि s.equals (टी) सत्य है। – Kaushal
क्या आपके क्लास लोडर को पैरेंट क्लास लोडर में लोडिंग/प्रतिनिधि लोड करना है? – diginoise
'==' के बजाय बराबर का उपयोग क्यों नहीं करते हैं। क्या आप लाइन को नलपॉन्टरएक्सप्शन के साथ चिह्नित कर सकते हैं, मेरे बिंदु से स्ट्रिंग इंटर्निंग इस – CoronA