spring-ws icon indicating copy to clipboard operation
spring-ws copied to clipboard

GraalVM Native Image support

Open naihil opened this issue 2 years ago • 3 comments

This is not a bug report, only my experiments to build spring-ws in native image. I have a simple project that uses WebServiceTemplate to send/receive SOAP messages. It compiles fine but there were several runtime exceptions. To resolve them I need following files in META-INF/native-image:

  1. reflect-config.json:
[
  {
    "name" : "com.sun.org.apache.xpath.internal.functions.FuncNormalizeSpace",
    "allDeclaredConstructors": true
  },
  {
    "name" : "org.springframework.ws.soap.saaj.SaajSoapMessageFactory",
    "allDeclaredConstructors": true
  },
  {
    "name" : "org.springframework.ws.transport.http.HttpUrlConnectionMessageSender",
    "allDeclaredConstructors": true
  },
  {
    "name" : "org.springframework.ws.soap.client.core.SoapFaultMessageResolver",
    "allDeclaredConstructors": true
  },
  {
    "name" : "org.springframework.ws.soap.server.endpoint.adapter.method.SoapMethodArgumentResolver",
    "allDeclaredConstructors": true
  },
  {
    "name" : "org.springframework.ws.soap.server.endpoint.adapter.method.SoapHeaderElementMethodArgumentResolver",
    "allDeclaredConstructors": true
  }
]

  1. resource-config.json:
{
  "resources": {
    "includes": [
      {
        "pattern": "\\Qorg\/springframework\/ws\/transport\/http\/MessageDispatcherServlet.properties\\E"
      },
      {
        "pattern": "\\Qorg\/springframework\/ws\/client\/core\/WebServiceTemplate.properties\\E"
      },
      {
        "pattern": "\\Qorg\/springframework\/ws\/server\/MessageDispatcher.properties\\E"
      },
      {
        "pattern": "\\Qorg\/springframework\/ws\/soap\/server\/SoapMessageDispatcher.properties\\E"
      }
    ]
  }
}

Maybe this helps someone to submit official support to spring-ws.

naihil avatar Feb 01 '23 19:02 naihil

@naihil Thank you! Worked like a charm for me!

How do find out this stuff?

ksilz avatar Feb 15 '23 16:02 ksilz

@naihil Thank you! Worked like a charm for me!

How do find out this stuff?

@ksilz You can find parts of it using the native-image-agent.

@naihil Thanks!

NicklasWallgren avatar Jan 07 '24 14:01 NicklasWallgren

This is one of the reasons why we stopped using native image. There are too many libraries even from Spring themselves that don't support it fully yet which means it requires a lot of maintenance work for us.

plebcity avatar May 24 '24 08:05 plebcity