[
https://issues.jboss.org/browse/WFLY-5941?page=com.atlassian.jira.plugin....
]
John Farrelly updated WFLY-5941:
--------------------------------
Description:
I created a service archive based on the code in {{wildfly/sar/src/test/_java}}. I have
the following files in my {{standalone/deployment}} directory:
{noformat}
.
|-- my-test.sar
| |-- META-INF
| | `-- jboss-service.xml
| `-- org
| `-- jboss
| `-- as
| `-- service
| |-- LegacyService.class
| `-- LegacyServiceMBean.class
`-- my-test.sar.dodeploy
{noformat}
I get the following error when WildFly tries to deploy the sar:
{noformat}
10:47:01,472 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-7) MSC000001: Failed
to start service jboss.mbean.service.jboss:name=testTwo,type=service.create:
org.jboss.msc.service.StartException in service
jboss.mbean.service.jboss:name=testTwo,type=service.create: Failed to start service
at
org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1904)
[jboss-msc-1.2.6.Final.jar:1.2.6.Final]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
[rt.jar:1.8.0_60]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
[rt.jar:1.8.0_60]
at java.lang.Thread.run(Thread.java:745) [rt.jar:1.8.0_60]
Caused by: org.jboss.msc.inject.InjectionException: Injection failed
at org.jboss.msc.inject.MethodInjector.inject(MethodInjector.java:102)
[jboss-msc-1.2.6.Final.jar:1.2.6.Final]
at
org.jboss.msc.service.ServiceControllerImpl.doInject(ServiceControllerImpl.java:1672)
[jboss-msc-1.2.6.Final.jar:1.2.6.Final]
at
org.jboss.msc.service.ServiceControllerImpl.access$2000(ServiceControllerImpl.java:51)
[jboss-msc-1.2.6.Final.jar:1.2.6.Final]
at
org.jboss.msc.service.ServiceControllerImpl$StartTask.performInjections(ServiceControllerImpl.java:1917)
[jboss-msc-1.2.6.Final.jar:1.2.6.Final]
at
org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1876)
[jboss-msc-1.2.6.Final.jar:1.2.6.Final]
... 3 more
Caused by: java.lang.IllegalArgumentException: argument type mismatch
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.8.0_60]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[rt.jar:1.8.0_60]
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[rt.jar:1.8.0_60]
at java.lang.reflect.Method.invoke(Method.java:497) [rt.jar:1.8.0_60]
at org.jboss.msc.inject.MethodInjector.inject(MethodInjector.java:92)
[jboss-msc-1.2.6.Final.jar:1.2.6.Final]
... 7 more
{noformat}
Attached is the sar file that I tried to deploy. The {{META-INF/jboss-service.xml}} file
has the following content:
{code:xml}
<server xmlns="urn:jboss:service:7.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:jboss:service:7.0 jboss-service_7_0.xsd">
<mbean name="jboss:name=test,type=service"
code="org.jboss.as.service.LegacyService">
<constructor>
<arg value="Test Value" type="java.lang.String"/>
</constructor>
</mbean>
<mbean name="jboss:name=testTwo,type=service"
code="org.jboss.as.service.LegacyService">
<depends
optional-attribute-name="other">jboss:name=test,type=service</depends>
<attribute name="somethingElse">
<value-factory bean="jboss:name=test,type=service"
method="appendSomethingElse">
<parameter class="java.lang.String">more
value</parameter>
</value-factory>
</attribute>
</mbean>
<mbean name="jboss:name=testThree,type=service"
code="org.jboss.as.service.LegacyService">
<attribute name="other">
<inject bean="jboss:name=testTwo,type=service"
property="other"/>
</attribute>
<attribute name="somethingElse">Another test
value</attribute>
</mbean>
</server>
{code}
The code for {{LegacyService}} is as follows:
{code:java}
package org.jboss.as.service;
import org.jboss.logging.Logger;
/**
* @author John E. Bailey
*/
public class LegacyService implements LegacyServiceMBean {
private static final Logger logger = Logger.getLogger(LegacyService.class);
private LegacyService other;
private String somethingElse;
public LegacyService() {
}
public LegacyService(String somethingElse) {
this.somethingElse = somethingElse;
}
public void setOther(LegacyService other) {
this.other = other;
}
public LegacyService getOther() {
return other;
}
public String getSomethingElse() {
return somethingElse;
}
public String appendSomethingElse(String more) {
return somethingElse + " - " + more;
}
public void setSomethingElse(String somethingElse) {
this.somethingElse = somethingElse;
}
public void start() {
logger.info("Started");
}
public void stop() {
logger.info("Stopped");
}
}
{code}
The code for {{LegacyServiceMBean.java}} is:
{code:java}
package org.jboss.as.service;
/**
* @author John Bailey
*/
public interface LegacyServiceMBean {
}
{code}
was:
We use Orbacus as our CORBA implementation, and in our application we wish to use CORBA
classes only from the orbacus module, and not the JDK/WildFly bundled CORBA.
In the {{jboss-deployment-structure.xml}} file of our {{ear}} file, we have the
following:
{code:xml}
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
<ear-subdeployments-isolated>false</ear-subdeployments-isolated>
<deployment>
<exclusions>
<module name="javax.orb.api" />
<module name="org.omg.api" />
</exclusions>
<dependencies>
<module name="com.ooc.orbacus" export="true"/>
<module name="org.apache.commons.logging" export="true"
/>
<module name="org.apache.commons.collections"
export="true" />
<module name="org.apache.log4j" export="true" />
<module name="org.dom4j" export="true" />
<module name="org.jdom" export="true" />
<module name="javax.faces.api" slot="mojarra-2.1.23"
export="true"/>
<module name="com.sun.jsf-impl" slot="mojarra-2.1.23"
export="true"/>
<module name="org.jboss.ejb-client" export="true"
/>
<module name="org.jboss.remote-naming" export="true"
/>
<module name="org.jboss.remoting3" export="true" />
<module name="org.apache.xerces" />
<!-- dependency for richfaces -->
<module name="com.google.guava" slot="11.0.2"
export="true"/>
</dependencies>
</deployment>
...
{code}
However, despite excluding the {{javax.orb.api}} module, I can see that
{{org.omg.PortableServer.Servant}} is loaded from that module instead of being loaded from
our {{com.ooc.orbacus}} module. This causes our application to fail.
Debugging through the jboss module loader, I can see that it considers both
{{javax.orb.api}} and {{com.ooc.orbacus}} as prodivers of the {{org/omg/PortableServer}}
path. I am not sure why {{javax.orb.api}} is being considered when it has been excluded
in the deployment descriptor for the application.
IllegalArgumentException when injecting dependencies for SAR
------------------------------------------------------------
Key: WFLY-5941
URL:
https://issues.jboss.org/browse/WFLY-5941
Project: WildFly
Issue Type: Bug
Components: Class Loading
Affects Versions: 10.0.0.CR4
Environment: Red Hat Enterprise Linux Server release 7.1 (Maipo)
Linux 3.10.0-229.4.2.el7.x86_64 #1 SMP Wed May 13 10:06:09 UTC 2015 x86_64 x86_64 x86_64
GNU/Linux
java version "1.8.0_60"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)
Reporter: John Farrelly
Assignee: Stuart Douglas
I created a service archive based on the code in {{wildfly/sar/src/test/_java}}. I have
the following files in my {{standalone/deployment}} directory:
{noformat}
.
|-- my-test.sar
| |-- META-INF
| | `-- jboss-service.xml
| `-- org
| `-- jboss
| `-- as
| `-- service
| |-- LegacyService.class
| `-- LegacyServiceMBean.class
`-- my-test.sar.dodeploy
{noformat}
I get the following error when WildFly tries to deploy the sar:
{noformat}
10:47:01,472 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-7) MSC000001:
Failed to start service jboss.mbean.service.jboss:name=testTwo,type=service.create:
org.jboss.msc.service.StartException in service
jboss.mbean.service.jboss:name=testTwo,type=service.create: Failed to start service
at
org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1904)
[jboss-msc-1.2.6.Final.jar:1.2.6.Final]
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
[rt.jar:1.8.0_60]
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
[rt.jar:1.8.0_60]
at java.lang.Thread.run(Thread.java:745) [rt.jar:1.8.0_60]
Caused by: org.jboss.msc.inject.InjectionException: Injection failed
at org.jboss.msc.inject.MethodInjector.inject(MethodInjector.java:102)
[jboss-msc-1.2.6.Final.jar:1.2.6.Final]
at
org.jboss.msc.service.ServiceControllerImpl.doInject(ServiceControllerImpl.java:1672)
[jboss-msc-1.2.6.Final.jar:1.2.6.Final]
at
org.jboss.msc.service.ServiceControllerImpl.access$2000(ServiceControllerImpl.java:51)
[jboss-msc-1.2.6.Final.jar:1.2.6.Final]
at
org.jboss.msc.service.ServiceControllerImpl$StartTask.performInjections(ServiceControllerImpl.java:1917)
[jboss-msc-1.2.6.Final.jar:1.2.6.Final]
at
org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1876)
[jboss-msc-1.2.6.Final.jar:1.2.6.Final]
... 3 more
Caused by: java.lang.IllegalArgumentException: argument type mismatch
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.8.0_60]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[rt.jar:1.8.0_60]
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[rt.jar:1.8.0_60]
at java.lang.reflect.Method.invoke(Method.java:497) [rt.jar:1.8.0_60]
at org.jboss.msc.inject.MethodInjector.inject(MethodInjector.java:92)
[jboss-msc-1.2.6.Final.jar:1.2.6.Final]
... 7 more
{noformat}
Attached is the sar file that I tried to deploy. The {{META-INF/jboss-service.xml}} file
has the following content:
{code:xml}
<server xmlns="urn:jboss:service:7.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:jboss:service:7.0 jboss-service_7_0.xsd">
<mbean name="jboss:name=test,type=service"
code="org.jboss.as.service.LegacyService">
<constructor>
<arg value="Test Value" type="java.lang.String"/>
</constructor>
</mbean>
<mbean name="jboss:name=testTwo,type=service"
code="org.jboss.as.service.LegacyService">
<depends
optional-attribute-name="other">jboss:name=test,type=service</depends>
<attribute name="somethingElse">
<value-factory bean="jboss:name=test,type=service"
method="appendSomethingElse">
<parameter class="java.lang.String">more
value</parameter>
</value-factory>
</attribute>
</mbean>
<mbean name="jboss:name=testThree,type=service"
code="org.jboss.as.service.LegacyService">
<attribute name="other">
<inject bean="jboss:name=testTwo,type=service"
property="other"/>
</attribute>
<attribute name="somethingElse">Another test
value</attribute>
</mbean>
</server>
{code}
The code for {{LegacyService}} is as follows:
{code:java}
package org.jboss.as.service;
import org.jboss.logging.Logger;
/**
* @author John E. Bailey
*/
public class LegacyService implements LegacyServiceMBean {
private static final Logger logger = Logger.getLogger(LegacyService.class);
private LegacyService other;
private String somethingElse;
public LegacyService() {
}
public LegacyService(String somethingElse) {
this.somethingElse = somethingElse;
}
public void setOther(LegacyService other) {
this.other = other;
}
public LegacyService getOther() {
return other;
}
public String getSomethingElse() {
return somethingElse;
}
public String appendSomethingElse(String more) {
return somethingElse + " - " + more;
}
public void setSomethingElse(String somethingElse) {
this.somethingElse = somethingElse;
}
public void start() {
logger.info("Started");
}
public void stop() {
logger.info("Stopped");
}
}
{code}
The code for {{LegacyServiceMBean.java}} is:
{code:java}
package org.jboss.as.service;
/**
* @author John Bailey
*/
public interface LegacyServiceMBean {
}
{code}
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)