[JBoss JIRA] Created: (JBWS-2317) $JAXBAccessorF_ and $JAXBAccessorM_ cache loosing classes and failing to re-create classes.
by Darran Lofthouse (JIRA)
$JAXBAccessorF_ and $JAXBAccessorM_ cache loosing classes and failing to re-create classes.
-------------------------------------------------------------------------------------------
Key: JBWS-2317
URL: https://jira.jboss.org/jira/browse/JBWS-2317
Project: JBoss Web Services
Issue Type: Bug
Security Level: Public (Everyone can see)
Components: jbossws-metro, jbossws-native
Affects Versions: jbossws-metro-3.0.3, jbossws-native-3.0.3
Reporter: Darran Lofthouse
Assignee: Darran Lofthouse
Fix For: jbossws-native-3.0.4, jbossws-metro-3.0.4
The JAXB implementation contains a package of classes to optimise field and method access by dynamically generating classes to avoid reflection, this has a start-up performance hit but then leads to an optimised runtime.
The package is: -
'com.sun.xml.bind.v2.runtime.reflect.opt'
Within the Injector class is a HashMap to maintain a cache of these classes against the classloader they were created for: -
private static final Map<ClassLoader,WeakReference<Injector>> injectors =
Collections.synchronizedMap(new WeakHashMap<ClassLoader,WeakReference<Injector>>());
A WeakReference has been used to wrap the value to prevent the value retaining a reference to the ClassLoader and then preventing garbage collection and leading to a leak.
The problem is that nothing retains a reference to the Injector so as this is wrapped with a WeakReference it is garbage collected.
I will attach to this case a new version of Injector.java.
The fix switches to using a Strong reference to the Injector so it is not garbage collected.
To maintain the original requirements the Injector will no longer hold a reference to the ClassLoader and will instead make use of the one passed in.
Within the Injector the HashMap of classes will reference the Class with a WeakReference. If we get a WeakReference with no class it means the class was previously loaded but garbage collected, in this case try to load the class by name from the classloader - if this fails then redefine the class.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
13 years, 7 months
[JBoss JIRA] Created: (JBWS-2728) Review JBossWS EJB integration
by Richard Opalka (JIRA)
Review JBossWS EJB integration
-------------------------------
Key: JBWS-2728
URL: https://jira.jboss.org/jira/browse/JBWS-2728
Project: JBoss Web Services
Issue Type: Task
Security Level: Public (Everyone can see)
Components: jbossws-integration
Reporter: Richard Opalka
Assignee: Richard Opalka
Fix For: jbossws-cxf-3.2.1, jbossws-native-3.2.1, jbossws-metro-3.2.1
We're depending on EJB real deployers.
We need to investigate whether we really
need to depend on these EJB deployers.
Maybe using JBoss meta data will could sufficient?
Some time ago also Adrian Brock wrote (see http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4059197#4059197):
---
Even after this, there are lots of issues about whether webservices should be
depending on things like ejb3 at all. It should certainly have access to its metadata for
deployment purposes, which is one of the reasons we have started a
"metadata" project so projects can share each others models.
---
The only possible problem that comes to my mind is
whether we're able to implement JBossWS injections
without depending on EJB real deployers?
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
13 years, 7 months
[JBoss JIRA] Created: (JBWS-2882) Give setMTOMEnabled higher priority for clients
by Darran Lofthouse (JIRA)
Give setMTOMEnabled higher priority for clients
-----------------------------------------------
Key: JBWS-2882
URL: https://jira.jboss.org/jira/browse/JBWS-2882
Project: JBoss Web Services
Issue Type: Task
Security Level: Public (Everyone can see)
Components: jbossws-native
Affects Versions: jbossws-native-3.2.2
Reporter: Darran Lofthouse
Assignee: Darran Lofthouse
Fix For: jbossws-native-3.3.0
Presently JBossWS clients call setMTOMEnabled to indicate if MTOM should be enabled for the call, however JBossWS then scans the known types for an @XmlMimeType annotation to decide if the call is eligible for MTOM.
The MTOM optimisation however applies to all binary types and not just the ones annotated with @XmlMimeType. The call to setMTOMEnabled should be sufficient to enable MTOM without requiring the check for @XmlMimeType
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
13 years, 9 months
[JBoss JIRA] Created: (JBWS-2192) Asynchronous calls not thread safe
by Thomas Diesler (JIRA)
Asynchronous calls not thread safe
----------------------------------
Key: JBWS-2192
URL: http://jira.jboss.com/jira/browse/JBWS-2192
Project: JBoss Web Services
Issue Type: Bug
Security Level: Public (Everyone can see)
Components: jbossws-native
Reporter: Thomas Diesler
Fix For: jbossws-native-3.0.3
Darran sais:
I am currently looking at a support case where the customer is getting a number of errors with asynchronous JAX-WS invocations using a AsyncHandler.
I am running a couple of test cases against the two EAP releases and I am able to reproduce the behaviour that the customer is seeing but I just quickly wanted to double check what should be thread safe.
I have an async method on the SEI that returns a Future instance and takes an AsyncHandler as a parameter: -
@WebMethod(operationName = "lookup")
public Future<?> lookupAsync(final Person person,
AsyncHandler<TelephoneNumber> handler);
This pattern seems to suggest that after the call has been made any further interaction will be with the Future instance or the handler which then makes it look as though the Port is free to service other requests.
However if I submit multiple requests using the same Port then the outgoing requests start to get mixed up.
Should it be possible to re-use the same Port / SEI Proxy for multiple calls without worries of messages being mixed up?
I would have thought if the Port was not supposed to be re-used the get methods for the response would be on the Port instance and not need to use this returned interface.
I have attached the client I am using to reproduce the errors.
Creating a new Port for each request does overcome this issue but they are trying to avoid this especially as the existing Port should have passed the last request off to another thread for processing.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
14 years
[JBoss JIRA] Created: (JBWS-2891) JAX-WS Detect and report duplicate wrapper classes
by Darran Lofthouse (JIRA)
JAX-WS Detect and report duplicate wrapper classes
--------------------------------------------------
Key: JBWS-2891
URL: https://jira.jboss.org/jira/browse/JBWS-2891
Project: JBoss Web Services
Issue Type: Bug
Security Level: Public (Everyone can see)
Components: jbossws-native
Affects Versions: jbossws-native-3.2.2
Reporter: Darran Lofthouse
Assignee: Darran Lofthouse
Fix For: jbossws-native-3.3.0
>From the JAX-WS specification section 3.6.2.1 regarding Document Wrapped: -
Conformance (Default wrapper bean names): In the absence of customizations, the wrapper request bean
class MUST be named the same as the method and the wrapper response bean class MUST be named the
same as the method with a "Response" suffix. The first letter of each bean name is capitalized to follow
Java class naming conventions.
Conformance (Wrapper bean name clash): Generated bean classes must have unique names within a pack-
age and MUST NOT clash with other classes in that package. Clashes during generation MUST be reported
as an error and require user intervention via name customization to correct. Note that some platforms do not
distiguish filenames based on case so comparisons MUST ignore case.
However if two services in the same package have the same operation there is an overlap of the generated wrappers which then causes the schemas between the two WSDLS to overlap.
Using the @RequestWrapper and @ResponseWrapper annotations does separate the wrappers which also corrects the WSDLs, from the JAX-WS spec 'Conformance' paragraphs above this conflict should have been identified and reported as an error during deployment.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
14 years