]
Parul Sharma edited comment on WFLY-11999 at 5/28/20 11:41 PM:
---------------------------------------------------------------
[~jim.ma] [~s.frings74] Can you please let me know what is the purpose of using
@ApplicationScoped and @webservice both?
The reason is *@Application* is responsible for initializing CDI/weld that's why
multiple instances are creating on the server start. One instance is creating for web
services and another for CDI/Weld. Yes, after calling SoapService it should create only
one instance but on server start, the startup method has been executing two times because
as I explain above Test application is initializing for both CDI and web services.
You didn't face this issue in apache because it doesn't have CDI/weld.
Thanks
was (Author: parsharma):
[~jim.ma] [~s.frings74] Can you please let me know what is the purpose of using
@ApplicationScoped and @webservice both?
*@Application* is responsible for initializing CDI/weld that's why multiple instances
are creating when we start the server. One is creating for web services and another for
CDI/Weld. You didn't face this issue in apache (multiple instances) because it
doesn't have CDI/weld.
Yes, after calling SoapService it should create only one instance. Currently, it is
creating two instances.
Wildfly creates to many instances of all web service classes
------------------------------------------------------------
Key: WFLY-11999
URL:
https://issues.redhat.com/browse/WFLY-11999
Project: WildFly
Issue Type: Bug
Components: Web Services
Affects Versions: 8.0.0.Final, 16.0.0.Final, 19.0.0.Final
Environment: Ubuntu 18.10 64bit, Open JDK 8 or Open JDK 11
Reporter: Stefan Frings
Assignee: Parul Sharma
Priority: Minor
Attachments: Test-1.0-SNAPSHOT.war, Test.zip, standalone.xml
1) My @Webservice classes are all constructed multiple times (3x - 4x) but I expected
only one instance.
2) Only the second instance receives a call to the observer method for initialization. I
expect that this method is called in each instance.
The issue can be reproduced with the attached minimum project on Wildfly 8 with JDK 8 as
well as Wildfly 16 with JDK 11.
Complete source code of the whole application:
{code}
package com.mvneco.test;
import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.context.Initialized;
import javax.enterprise.event.Observes;
import javax.jws.WebMethod;
import javax.jws.WebService;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@ApplicationScoped
@WebService
public class SoapService
{
private Log log = LogFactory.getLog(SoapService.class);
public SoapService()
{
log.debug("Init SoapService 1");
}
@WebMethod(exclude = true)
public void init(@Observes @Initialized(ApplicationScoped.class) Object init)
{
log.debug("Init SoapService 2");
}
@WebMethod
public String test(String payload)
{
log.debug("Start test(). payload="+payload);
return "OK";
}
}
{code}
Extract from Log messages that show the issue (the complete log is in the attached ZIP):
{code}
2019-04-17 13:12:21,399 DEBUG [com.mvneco.test.SoapService] (MSC service thread 1-2) Init
SoapService 1
2019-04-17 13:12:23,068 DEBUG [com.mvneco.test.SoapService] (ServerService Thread Pool --
74) Init SoapService 1
2019-04-17 13:12:23,070 DEBUG [com.mvneco.test.SoapService] (ServerService Thread Pool --
74) Init SoapService 2
2019-04-17 13:12:23,475 INFO [org.jboss.as] (Controller Boot Thread) WFLYSRV0025:
WildFly Full 16.0.0.Final (WildFly Core 8.0.0.Final) started in 10514ms - Started 510 of
699 services (337 services are lazy, passive or on-demand)
2019-04-17 13:12:28,920 INFO [org.apache.cxf.services.SoapService.REQ_IN] (default
task-1) REQ_IN
Address:
http://localhost:8080/Test-1.0-SNAPSHOT/SoapService
...
2019-04-17 13:12:28,932 DEBUG [com.mvneco.test.SoapService] (default task-1) Init
SoapService 1
2019-04-17 13:12:28,937 DEBUG [com.mvneco.test.SoapService] (default task-1) Init
SoapService 1
2019-04-17 13:12:28,937 DEBUG [com.mvneco.test.SoapService] (default task-1) Start
test(). payload=?
2019-04-17 13:12:28,969 INFO [org.apache.cxf.services.SoapService.RESP_OUT] (default
task-1) RESP_OUT
Content-Type: text/xml
...
{code}