Your code and config looks good to me.
Like Dan explained it looks like glassfish might be doing something
strange here.
Can you perhaps create a complete project of your service? Perhaps the
problem is outside the spring config and
your service.
One important question is how do you start the spring context? That is
probably in your web.xml.
Christian
Am 09.12.2011 13:39, schrieb Marcus Young:
Hi Christian,
I have included the code segments below. The commented out section was the
original functionality that I removed in order to just focus on the service
implementation itself. I have since created another simple service that
returns a String - with the same result. Each time the service is invoked
a new service implementation object is created on the heap.
@WebService(name = "HL7Service", targetNamespace = "http://ws.foo.bar.com/")
public interface HL7Service {
@WebMethod(operationName = "submit", action = "urn:Submit")
public void submit(@WebParam(name = "msg") String msg);
}
@WebService(targetNamespace = "http://ws.foo.bar.com/",
endpointInterface = "com.bar.foo.ws.HL7Service", portName =
"HL7ServiceImplPort", serviceName = "HL7ServiceImplService")
public class HL7ServiceImpl implements HL7Service {
public void submit (String msg) {
// if (msg == null)
// return ("NAK");
// else
// EventQueue.getInstance().submit(msg);
//
// return "ACK";
if (msg != null) { // temp
// DO nothing
}
}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jaxws="http://cxf.apache.org/jaxws"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">
<import resource="classpath:META-INF/cxf/cxf.xml" />
<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
<jaxws:endpoint id="hl7service"
implementor="com.bar.foo.ws.HL7ServiceImpl" address="/hl7service">
<jaxws:features>
<bean class="org.apache.cxf.feature.LoggingFeature" />
</jaxws:features>
</jaxws:endpoint>
</beans>
Marcus
On Fri, Dec 9, 2011 at 7:53 PM, Christian Schneider<[email protected]
wrote:
Hi Marcus,
it would help a lot if you could post your config/code so we see what you
did.
You should really only instantiate the service once.
Christian
Am 09.12.2011 09:10, schrieb Marcus Young:
I am sure that this has a very simple explanation, however I am still very
much in the learning phase with CXF.
I have built a simple web service using the tooling in Eclipse (Dynamic
web
project / Glassfish 3 / CXF 2.4). The service receives a String and
writes
it to a database. I have noticed that after running for some time the
application runs out of heap space. Using a profiling tool I found that
for each invocation of the service an implementation object was created on
the heap. These remained until the JVM ran out of heap space. From a
posting on Stack Overflow (
http://stackoverflow.com/**questions/8427329/possible-**
memory-leak-cxf-2-4-2-**glassfish-3<http://stackoverflow.com/questions/8427329/possible-memory-leak-cxf-2-4-2-glassfish-3>
)
it was suggested that a service implementation should essentially be a
Singleton and only one instance should ever be created which is clearly
not
the case in my situation. I have started to think that it may have
something to do with the way I have configured CXF although I have not
been
able to find any information that relates to the issue that I
am experiencing.
There is obviously a hole in my understanding or the code that I have
written - any advice or guidance would be very much appreciated.
Marcus
--
Christian Schneider
http://www.liquid-reality.de
Open Source Architect
Talend Application Integration Division http://www.talend.com
--
Christian Schneider
http://www.liquid-reality.de
Open Source Architect
Talend Application Integration Division http://www.talend.com