We used the class
JAXWSProperties from the
com.sun.* package in the code in order to set timeout properties like this:
import com.sun.xml.internal.ws.developer.JAXWSProperties; ... Map<String, Object> ctxt = ((BindingProvider) port).getRequestContext(); ctxt.put(JAXWSProperties.CONNECT_TIMEOUT, 10000);
It compiles fine in the local Eclipse, but not on a continuous integration system (both using JDK 1.6). From researching this problem, I learned that the
com.sun.* package should be avoided.
So my questions are:
- What causes the failed import at compile time?
- What should be used instead of
I’ve just had pretty much the same problem while converting one of our projects to run under Maven.
The solution I found, isn’t really an ideal solution, in fact it’s more of a “cludge” than a “fix,” although it does run through the compiler OK. Like you I did a bit of research on this issue, and found a comment from Sun saying that these packages are hidden from the compiler, but are available to the JVM.
So, the solution I found was to simply find the string to which the constant was pointing, and use that locally.
In your case it would be:
final static String CONNECT_TIMEOUT = "com.sun.xml.internal.ws.connect.timeout"; .... Map<String, Object> ctxt = ((BindingProvider) port).getRequestContext(); ctxt.put(CONNECT_TIMEOUT, 10000);
As I mentioned, this isn’t ideal, and can not be guaranteed to work in future compiler releases, so use with care.