[jboss-as7-dev] Issue in EJB ?
Jim Ma
ema at redhat.com
Wed Jul 27 01:01:09 EDT 2011
Thanks for looking into this , Jaikiran.
On 07/23/2011 10:55 PM, Jaikiran Pai wrote:
> This one really doesn't have to do anything with Webservice or EJB. It's
> plain JAXP issue within AS7. Here's a bean/testcase which easily
> reproduces it
> https://github.com/jaikiran/jboss-as/commit/4e25a7771698c4745ac7594679f7331d3795c758.
> Here's the relevant part from that EJB code:
>
> @Stateless
> public class StatelessWSAccessingDataTypeFactory {
>
> private static final Logger logger =
> Logger.getLogger(StatelessWSAccessingDataTypeFactory.class);
>
> private static final Duration duration;
>
> static {
> try {
> duration =
> DatatypeFactory.newInstance().newDuration(86400000L);
> ...
> }
>
> This results in a CNFE http://pastebin.com/3tgtrhnx. The important piece
> here is the static initialization block of the bean. This gets invoked
> during the deployment stage when the TCCL is null. The JAXP
> DataTypeFactory relies on TCCL to be set. If the TCCL is null it just
> throws a CNFE, like it does here, instead of falling back on the system
> classloader. This probably is a bug in JAXP, since from what I see the
> JAXP XMLInputFactory falls back to system classloader in the absence of
> TCCL being set. @see
> javax.xml.stream.SecuritySupport.getContextClassLoader() and compare it
> to the buggy(?)
> javax.xml.datatype.SecuritySupport.getContextClassLoader(). I think the
> DataTypeFactory should be falling back to system classloader in the
> absence of TCCL. Thoughts? How do we fix this?
>
> As for a workaround, Jim, moving that static initialization into a
> @PostConstruct method should get you past this issue.
>
> -Jaikiran
> On Saturday 23 July 2011 10:26 AM, Jaikiran Pai wrote:
>> Missed this thread. Will look into this today.
>>
>> -Jaikiran
>> On Saturday 23 July 2011 10:18 AM, Jason Greene wrote:
>>> Did anyone look into this?
>>>
>>> Sent from my iPad
>>>
>>> On Jul 20, 2011, at 2:52 AM, Jim Ma<ema at redhat.com
>>> <mailto:ema at redhat.com>> wrote:
>>>
>>>> I tried to deploy a webserivce endpoint impl with @Stateless
>>>> annotation packaged in a war file which works with AS5 and AS6 into
>>>> latest AS7 snapshot and got CNF exception.
>>>> Below I list the error statck trace , endpoint impl class and the
>>>> web.xml used to deploy this ws endpoint. From the error stack trace
>>>> , it looks like the issue in ejb side ? But it works
>>>> when I deploy this endpoint with an ejb jar file. Is it another
>>>> classloader issue ?
>>>>
>>>> Thanks
>>>> Jim
>>>>
>>>>
>>>> -------------------error message------------------
>>>>
>>>> 1.
>>>> de/git-client/maerqiang-work/jboss-as/build/target/jboss-as-7.1.0.Alpha1-SNAPSHOT/standalone/data/wsdl/jaxws-benchmark-datatypes-pojo.war/EndpointWrappedRPCService.wsdl
>>>> 2.
>>>> 11:03:14,450 ERROR [stderr] (MSC service thread 1-12)
>>>> javax.xml.datatype.DatatypeConfigurationException: Provider
>>>> __redirected.__DatatypeFactory not found
>>>> 3.
>>>> 11:03:14,451 ERROR [stderr] (MSC service thread 1-12) at
>>>> javax.xml.datatype.DatatypeFactory.newInstance(DatatypeFactory.java:137)
>>>> 4.
>>>> 11:03:14,451 ERROR [stderr] (MSC service thread 1-12) at
>>>> org.jboss.test.ws.jaxws.benchmark.test.datatypes.EndpointPOJOWrappedDocImpl.<clinit>(EndpointPOJOWrappedDocImpl.java:54)
>>>> 5.
>>>> 11:03:14,452 ERROR [stderr] (MSC service thread 1-12) at
>>>> sun.misc.Unsafe.ensureClassInitialized(Native Method)
>>>> 6.
>>>> 11:03:14,452 ERROR [stderr] (MSC service thread 1-12) at
>>>> sun.reflect.UnsafeFieldAccessorFactory.newFieldAccessor(UnsafeFieldAccessorFactory.java:25)
>>>> 7.
>>>> 11:03:14,453 ERROR [stderr] (MSC service thread 1-12) at
>>>> sun.reflect.ReflectionFactory.newFieldAccessor(ReflectionFactory.java:122)
>>>> 8.
>>>> 11:03:14,453 ERROR [stderr] (MSC service thread 1-12) at
>>>> java.lang.reflect.Field.acquireFieldAccessor(Field.java:918)
>>>> 9.
>>>> 11:03:14,454 ERROR [stderr] (MSC service thread 1-12) at
>>>> java.lang.reflect.Field.getFieldAccessor(Field.java:899)
>>>> 10.
>>>> 11:03:14,454 ERROR [stderr] (MSC service thread 1-12) at
>>>> java.lang.reflect.Field.get(Field.java:358)
>>>> 11.
>>>> 11:03:14,454 ERROR [stderr] (MSC service thread 1-12) at
>>>> org.jboss.invocation.proxy.AbstractProxyFactory$MethodAccessibilitySetter.run(AbstractProxyFactory.java:253)
>>>> 12.
>>>> 11:03:14,455 ERROR [stderr] (MSC service thread 1-12) at
>>>> org.jboss.invocation.proxy.AbstractProxyFactory$MethodAccessibilitySetter.run(AbstractProxyFactory.java:244)
>>>> 13.
>>>> 11:03:14,455 ERROR [stderr] (MSC service thread 1-12) at
>>>> java.security.AccessController.doPrivileged(Native Method)
>>>> 14.
>>>> 11:03:14,456 ERROR [stderr] (MSC service thread 1-12) at
>>>> org.jboss.invocation.proxy.AbstractProxyFactory.afterClassLoad(AbstractProxyFactory.java:108)
>>>> 15.
>>>> 11:03:14,456 ERROR [stderr] (MSC service thread 1-12) at
>>>> org.jboss.invocation.proxy.AbstractClassFactory.defineClass(AbstractClassFactory.java:158)
>>>> 16.
>>>> 11:03:14,457 ERROR [stderr] (MSC service thread 1-12) at
>>>> org.jboss.invocation.proxy.AbstractProxyFactory.getCachedMethods(AbstractProxyFactory.java:118)
>>>> 17.
>>>> 11:03:14,457 ERROR [stderr] (MSC service thread 1-12) at
>>>> org.jboss.as.ejb3.component.stateless.StatelessComponentDescription$2.configure(StatelessComponentDescription.java:121)
>>>> 18.
>>>> 11:03:14,457 ERROR [stderr] (MSC service thread 1-12) at
>>>> org.jboss.as.ee.component.ComponentDescription$DefaultFirstConfigurator.configure(ComponentDescription.java:778)
>>>> 19.
>>>> 11:03:14,458 ERROR [stderr] (MSC service thread 1-12) at
>>>> org.jboss.as.ee.component.EEModuleConfigurationProcessor.deploy(EEModuleConfigurationProcessor.java:65)
>>>> 20.
>>>> 11:03:14,458 ERROR [stderr] (MSC service thread 1-12) at
>>>> org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:115)
>>>> 21.
>>>> 11:03:14,459 ERROR [stderr] (MSC service thread 1-12) at
>>>> org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1765)
>>>> 22.
>>>> 11:03:14,459 ERROR [stderr] (MSC service thread 1-12) at
>>>> org.jboss.msc.service.ServiceControllerImpl$ClearTCCLTask.run(ServiceControllerImpl.java:2291)
>>>> 23.
>>>> 11:03:14,459 ERROR [stderr] (MSC service thread 1-12) at
>>>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecuto
>>>> r.java:886)
>>>> 24.
>>>> 11:03:14,460 ERROR [stderr] (MSC service thread 1-12) at
>>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>>>> 25.
>>>> 11:03:14,460 ERROR [stderr] (MSC service thread 1-12) at
>>>> java.lang.Thread.run(Thread.java:662)
>>>> 26.
>>>> 11:03:14,461 ERROR [stderr] (MSC service thread 1-12) Caused
>>>> by: java.lang.ClassNotFoundException:
>>>> __redirected/__DatatypeFactory
>>>> 27.
>>>> 11:03:14,461 ERROR [stderr] (MSC service thread 1-12) at
>>>> java.lang.Class.forName0(Native Method)
>>>> 28.
>>>> 11:03:14,462 ERROR [stderr] (MSC service thread 1-12) at
>>>> java.lang.Class.forName(Class.java:247)
>>>> 29.
>>>> 11:03:14,462 ERROR [stderr ] (MSC service thread 1-12) at
>>>> javax.xml.datatype.FactoryFinder.getProviderClass(FactoryFinder.java:121)
>>>> 30.
>>>> 11:03:14,463 ERROR [stderr] (MSC service thread 1-12) at
>>>> javax.xml.datatype.FactoryFinder.newInstance(FactoryFinder.java:146)
>>>> 31.
>>>> 11:03:14,463 ERROR [stderr] (MSC service thread 1-12) at
>>>> javax.xml.datatype.FactoryFinder.find(FactoryFinder.java:187)
>>>> 32.
>>>> 11:03:14,463 ERROR [stderr] (MSC service thread 1-12) at
>>>> javax.xml.datatype.DatatypeFactory.newInstance(DatatypeFactory.java:131)
>>>> 33.
>>>> 11:03:14,464 ERROR [stderr] (MSC service thread 1-12) ... 22 more
>>>>
>>>> -------------------EndpointPOJOWrappedDocImpl.java------------------
>>>> @WebService(serviceName = "EndpointWrappedDocService", portName =
>>>> "EndpointWrappedDocPort", endpointInterface =
>>>> "org.jboss.test.ws.jaxws.benchmark.test.datatypes.EndpointWrappedDoc") @Stateless
>>>> public class EndpointPOJOWrappedDocImpl implements EndpointDoc {
>>>> private static Duration dayDuration; static { try { dayDuration =
>>>> DatatypeFactory.newInstance().newDuration(86400000L); } catch
>>>> (DatatypeConfigurationException e) { dayDuration = null;
>>>> e.printStackTrace(); } } private static final List<String>
>>>> stringList; static { stringList = new ArrayList<String>(); for (int i
>>>> = 0; i< 10; i++) { stringList.add("item " + i); } } public String
>>>> sayHello(String toWhom) { String greeting = "Hello World Greeting for
>>>> '" + toWhom + "' today"; return greeting; } }
>>>> -------web.xml----------<?xml version="1.0" encoding="UTF-8"?>
>>>> <web-app xmlns="http://java.sun.com/xml/ns/j2ee"
>>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>>> xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
>>>> http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
>>>> <servlet> <servlet-name>EndpointPOJOWrappedDocImpl</servlet-name>
>>>> <servlet-class>org.jboss.test.ws.jaxws.benchmark.test.datatypes.EndpointPOJOWrappedDocImpl</servlet-class>
>>>> </servlet> <servlet-mapping>
>>>> <servlet-name>EndpointPOJOWrappedDocImpl</servlet-name>
>>>> <url-pattern>/EndpointPOJOWrappedDocImpl</url-pattern>
>>>> </servlet-mapping> </web-app>
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> jboss-as7-dev mailing list
>>>> jboss-as7-dev at lists.jboss.org<mailto:jboss-as7-dev at lists.jboss.org>
>>>> https://lists.jboss.org/mailman/listinfo/jboss-as7-dev
>>>
>>> _______________________________________________
>>> jboss-as7-dev mailing list
>>> jboss-as7-dev at lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/jboss-as7-dev
>> _______________________________________________
>> jboss-as7-dev mailing list
>> jboss-as7-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/jboss-as7-dev
> _______________________________________________
> jboss-as7-dev mailing list
> jboss-as7-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/jboss-as7-dev
More information about the jboss-as7-dev
mailing list