Git Product home page Git Product logo

jax-ws-api's Introduction

Jakarta XML Web Services project

Build Status Jakarta Staging (Snapshots)

Jakarta XML Web Services defines a means for implementing XML-Based Web Services based on Jakarta SOAP with Attachments and Jakarta Web Services Metadata.

License

You’ll find the text of the licenses in the workspace in various LICENSE.txt or LICENSE.md files. Don’t let the presence of these license files in the workspace confuse you into thinking that they apply to all files in the workspace.

You should always read the license file included with every download, and read the license text included in every source file.

Contributing

We use contribution policy, which means we can only accept contributions under the terms of Eclipse Contributor Agreement.

jax-ws-api's People

Contributors

andymc12 avatar aserkes avatar bravehorsie avatar dblevins avatar dmitrigit avatar eclipse-jaxb-impl-bot avatar fredg02 avatar jaxws-bot avatar jbescos avatar kwsutter avatar lukasj avatar rameshmamidalaa avatar rng70-or avatar sawadood avatar senivam avatar tomas-kraus avatar tvallin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jax-ws-api's Issues

HandlerInfo.getHeaders() return type

Change QName[] return type for HandlerInfo.getHeaders() to a java.util.Set, java.util.List,
or java.util.Iterator. Use of an array prevents implementation of a copy-protection and/or
copy-on-write mechanism that could optimize the mandated copying of HandlerInfo
(QName elements are immutable, but the array can be modified.). Declaring HandlerInfo
semantics to be immutable would be a reasonable extention of this effort. Likewise for
Handler.getHeaders() and HandlerChain.getRoles()

Environment

Operating System: All
Platform: All

Affected Versions

[current]

Exception serialization model

Exceptions are kinda like beans, but we need a whole different serialization model for
them since they don't have default ctors and setters.

Environment

Operating System: All
Platform: All

Affected Versions

[current]

Compatibility certification request for Eclipse GlassFish 5.1 for Enterprise Web Services 1.4

  • Organization Name ("Organization") and, if applicable, URL:

    Eclipse Foundation
  • Product Name, Version and download URL (if applicable):

    Eclipse GlassFish 5.1
  • Specification Name, Version and download URL:

    Jakarta EE Platform, 8
  • TCK Version, digital SHA-256 fingerprint and download URL:

    Jakarta EE Platform TCK 8.0, SHA-256: 847c80c9c80bea4682006f186292b68acdd0ce9b239d998856c3a379c3a7be50
  • Public URL of TCK Results Summary:

    TCK results summary
  • Any Additional Specification Certification Requirements:

    Jakarta Injection Specification
    jakarta.inject-tck-1.0-bin.zip,
    b679bac9b1057df894753892a880ba6ade530607dd811157106ed767aa26481f

    Jakarta Contexts and Dependency Injection
    cdi-tck-2.0.6-dist.zip,
    75e969a7a3b3c77332154a2008309aad821a923d8684139242048a7640762808

    Jakarta Bean Validation
    beanvalidation-tck-dist-2.0.5.zip,
    4b10c1e850c871c0e47fd3c80177a81d855612085d4d2036aef4ea82b8db63d3
  • Java runtime used to run the implementation:

    Oracle JDK 1.8.0_191
  • Summary of the information for the certification environment, operating system, cloud, ...:

    Linux Centos 7, Apache Derby
  • By checking this box I acknowledge that the Organization I represent accepts the terms of the EFTL.
  • By checking this box I attest that all TCK requirements have been met, including any compatibility rules.

Compatibility certification request for Eclipse Metro 2.4.3

  • Organization Name ("Organization") and, if applicable, URL:
    Eclipse Foundation
  • Product Name, Version and download URL (if applicable):
    Eclipse Metro 2.4.3
  • Specification Name, Version and download URL:
    Jakarta XML Web Services 2.3
  • TCK Version, digital SHA-256 fingerprint and download URL:
    Jakarta XML Web Services TCK 2.3.0, SHA-256: bd4b123e71e1d6dc2e55fadd001edb65e22fb5f3f262179b86707ccb54b9355a
  • Public URL of TCK Results Summary:
    TCK results summary
  • Any Additional Specification Certification Requirements:
    None
  • Java runtime used to run the implementation:
    Oracle JDK 1.8.0_202
  • Summary of the information for the certification environment, operating system, cloud, ...:
    Linux
  • By checking this box I acknowledge that the Organization I represent accepts the terms of the EFTL.
  • By checking this box I attest that all TCK requirements have been met, including any compatibility rules.

SOAPFault Node not used in mapping the exceptions

10.2.2.3 Mapping Exceptions to SOAP Faults talks about mapping exceptions to faults.
SOAP 1.2 Fault can have the env:Node elmeent that carry information about which
SOAP Node threw the fault.

10.2.2.3 does n't describe how a a SOAPFaultException with SOAPFault, that has
Node set, should be marshalled as SOAP Fault.

This makes some implementations to ignore the Node set in SOAPFault.

Environment

Operating System: All
Platform: All

Affected Versions

[current]

Clarification of ServletEndpointContext.getMessageContext

10.1.3, ServletEndpointContext, on page 97 says:

"The method getMessageContext returns the MessageContext targeted for this endpoint
instance per remote method invocation. This enables the service endpoint instance to
access the MessageContext propagated by request HandlerChain (and its contained
Handler instances) to the target endpoint instance and to share any SOAP message
processing related context. The endpoint instance can access and manipulate the
MessageContext and share the SOAP message processing related context with the
response HandlerChain. Refer to the section 12.1, "JAX-RPC Handler APIs" for more
details on the SOAP message handler APIs."

The particular point I'd like clarified is: "This enables the service endpoint instance ... to
share any SOAP message processing related context." Is the original SOAP message part
of the "SOAP message processing related context"? SOAPMessageContext extends
MessageContext. Should the implementation be allowed to call ((SOAPMessageContext)
context).getMessage()?

For performance reasons, I would posit "no". The implementation already has that
information in the form of parameters. There is no reason to provide a means to pull it
out of the message.

If we said "yes", then what is the relationship between the parameters and the original
message? Say the parameter of a method were a SOAPElement. For performance, the
SOAPElement parameter could be the same object as that found in the SOAPMessage. Now
imagine that the implementation tweaked the parameter-SOAPElement, then got the
MessageContext-SOAPElement, assuming they'd be getting the original message; they'd be
wrong. If we would guarantee to the implementation that the MessageContext-
SOAPElement were the original, then we'd have to make a copy of the message data,
which would degrade performance.

So either JAX-RPC 2.0 must say that the ServletEndpointContext.getMessaeContext's
SOAPMessage cannot be queried or, if it is queryable, that it may not be the original SOAP
message. As I said before, I'd prefer that the SOAPMessage simply were not available to
the implementation. We could generalize this and say that no protocol message is
available to the implementation. That way folks wouldn't be tempted to write protocol-
specific implementations. Protocol-specific stuff belongs in the handlers.

Environment

Operating System: All
Platform: All

Affected Versions

[current]

Serializable parameter requirement

When the SEI is used in the EJB world, all parameters must be Serializable. But holders
and SOAPElement aren't serializable.

Environment

Operating System: All
Platform: All

Affected Versions

[current]

One way handler invocation

Clarify Ambiguity: For one-way RPC calls invoked by a client, neither handleReponse nor
handleFault are invoked (does this mean on the client-side only, or both client/server
side?)

Environment

Operating System: All
Platform: All

Affected Versions

[current]

Tag changed from 2.3.2-RELEASE to just 2.3.2 today

It seems this is becoming an issue across eclipse-ee4j projects. On another issue eclipse-ee4j/jaxb-ri#1275 (comment) I was presented a link to a discussion regarding tagging taking place on list.

I have already opened a similar issue jakartaee/saaj-api#27. Which seems there will be other projects going through the same. I will likely keep opening issues across projects till this is resolved. It is causing me a headache and to waste time, thus just passing along the joy...

Really no reason to remove tags, they are cheap. Doing such is just unfriendly to others. Going forward new tags can be created according to how ever the project decides. Not impressed thus far with Eclipse stewardship of JEE.

Convert "Eclipse Project for JAX-WS" into a specification project

In order to prepare this project to engage in specification work, we need to convert it into a specification project as defined by the Eclipse Foundation Specification Process (EFSP). As part of this work, we will change the project name and the scope.

We'll use this issue to capture the work that needs to be done as part of this effort.

  • Resolve #58
  • Resolve #57
  • Successful complete a restructuring review
  • Designate the project as a specification project of the Jakarta EE Working Group
  • Change project name

Interaction of polling and callbacks in async calls

For asynchronous calls with callback, the proposed method signature is as follows:

AsyncResponse startBar(java.lang.String p1,
java.lang.String p2, FooPortAsyncHandler h)

where FooPortAsyncHandler defines the following method (plus others for faults
and other async operations):

void endBar(BarResponse br);

Now, if we define

AsyncResponse extends Future

so as to be able to use the cancellation functionality in Future, we run into
the issue of what happens if the main thread tries to call
AsyncResponse.get() on the object returned by the startBar method
above. In particular, is there any guaranteed ordering between the main thread
and the callback thread? Wouldn't having such a guarantee be deadlock prone?

Environment

Operating System: All
Platform: All

Affected Versions

[current]

Sealing handler chains

Should there be a mechanism to seal handler chains to prevent runtime changes ?

Environment

Operating System: All
Platform: All

Affected Versions

[current]

Update Eclipse GlassFish

Update Eclipse GlassFish to use the new version of your API (and implementation, if applicable) by submitting a PR to GlassFish.

Although a new version of GlassFish will not be released for Jakarta EE 8, we hope to release an update sometime later.

Allow constants in Java SEI ?

Currently the spec prohibits Java SEIs from having constants. Should we relax this restriction and just
not map them ?

Environment

Operating System: All
Platform: Macintosh

Affected Versions

[current]

Public Release

Last CTS runs indicate no failures in this component. It's time to make a public release. Before the release make sure that Eclipse Release Review is passed and all dependencies have been released.

rpc/literal and null arguments

rpc/literal bindings use XSD types which are not nillable. How to handle Java types like
Integer that can have a null value.

Environment

Operating System: All
Platform: All

Affected Versions

[current]

Multiple messages in MessageContext

Rather than only having a single message in the message context shoudl it contain both request and
response messages (where applicable) ?

Environment

Operating System: All
Platform: Macintosh

Affected Versions

[current]

Jakarta EE 8 TCK job

To test Jakarta EE 8 compatibility we need to create a Jenkins job on project's Cloud Jenkins instance formally testing the API against the relevant TCK and as needed, relevant CTS subset tests.

For projects that do not already have automated testing, there is provided parameterized Jenkins job that can be invoked to perform these tests. User provides a link to an Eclipse GlassFish test build and sets the test sub-set parameters:

Additional instructions and guidance for using and directly running TCKs is available on this wiki. Also in the jakartaee-tck project repository.

Support for doc/lit type unwrapping

JAX-RPC will need control over the schema components mapped by JAXB. When using
doc/lit wrappers, we only need JAXB serializers for children of the wrapper
element rather than a serializer for the wrapper element itself.

Environment

Operating System: All
Platform: All

Affected Versions

[current]

Service.getWSDLLocation return is ambiguous

The spec and javadocs about this method are way too vague. When is this method supposed to be
used? I assume it's only valid for the generic Service class and not for generated implementations. You
may no longer have the WSDL file after you've generated your client code. Can this be better clarified in
the spec?

Environment

Operating System: All
Platform: Macintosh

Affected Versions

[current]

Change Maven coordinates

All current API libraries shipped must be distributed to Maven Central under a sub-package of the jakarta groupId. Before the first release Maven coordinates of this project must be changed as it's described here.

Service.getPorts return type

Why does Service.getPorts return QNames? Shouldn't it be Strings?

Environment

Operating System: All
Platform: All

Affected Versions

[current]

Binding headers in presence of duplicates

An issue was raised by the RI team about how to bind SOAP headers to parameters when there is more
than one SOAP header of a particular type.

As described in "2.6.2.1 Header Binding Extension" of the early draft, binding of SOAP headers to a
parameter can occur when:

  • a part from the main message is bound to a SOAP header in the WSDL binding
  • mapping of additional parts (from a different message) bound to a header is enabled.

WS-I BP states that the order of headers in a SOAP message is independent of the order of soap:header
elements in the WSDL binding – see R2751 in WS-I Basic Profile 1.0. The question is how to determine
which header should be bound to which parameter.

For example consider the following WSDL description:

<wsdl:definitions xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soapbind="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
targetNamespace="http://example.com/headerbinding"
xmlns:tns="http://example.com/headerbinding"
xmlns:types="http://example.com/headerbinding">

wsdl:types
<xsd:schema targetNamespace="http://example.com/headerbinding"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<xsd:element name="ClaimDetail" type="types:ClaimDetailType"/>
<xsd:complexType name="ClaimDetailType">
xsd:sequence
<xsd:element name="Name" type="xsd:string"/>

</xsd:sequence>
</xsd:complexType>

<xsd:element name="Address" type="types:AddressType"/>
<xsd:complexType name="AddressType">
xsd:sequence
<xsd:element name="Street" type="xsd:string"/>

</xsd:sequence>
</xsd:complexType>

<xsd:element name="ClaimRefNo" type="xsd:string"/>

</xsd:schema>
</wsdl:types>

<wsdl:message name="ClaimIn">
<wsdl:part name="claimDetails" element="types:ClaimDetail"/>
<wsdl:part name="homeAddress" element="types:Address"/>
<wsdl:part name="workAddress" element="types:Address"/>
</wsdl:message>

<wsdl:message name="ClaimOut">
<wsdl:part name="out" element="types:ClaimRefNo"/>
</wsdl:message>

<wsdl:portType name="ClaimPortType">
<wsdl:operation name="SubmitClaim">
<wsdl:input message="tns:ClaimIn"/>
<wsdl:output message="tns:ClaimOut"/>
</wsdl:operation>
</wsdl:portType>

<wsdl:binding name="ClaimBinding" type="tns:ClaimPortType">
<soapbind:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="SubmitClaim">
<soapbind:operation soapAction="http://example.com/soapaction"/>
wsdl:input
<soapbind:body parts="claimDetail" use="literal"/>
<soapbind:header message="tns:ClaimIn"
part="homeAddress" use="literal"/>
<soapbind:header message="tns:ClaimIn"
part="workAddress" use="literal"/>
</wsdl:input>
wsdl:output
<soapbind:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
</wsdl:definitions>

Resulting input message for "SubmitClaim" document/literal operation:

<env:Envelope
xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:types="http://example.com/headerbinding">
env:Header

types:Address
...

</types:Address>

types:Address
...

</types:Address>
</env:Header>
env:Body

types:ClaimDetail
...

</types:SubmitClaim>
</env:Body>
</env:Envelope>

Desired Java SEI

public interface ClaimPortType {
public String submitClaim(ClaimDetail detail, Address homeAddress, Address workAddress);
}

public class ClaimDetail {
// JAXB generated class for ClaimDetail element
public ClaimDetail();
public String getName();
public void setName(String name);
...
}

public class Address {
// JAXB generated class for Address element
public Address();
public String getStreet();
public void setStreet(String street);
...
}

Note that there's no way at runtime to tell the difference between the Address element for home
address and the Address element for work address. I can see a number of approaches:

Assume lexical order is significant (against R2751) and bind the first Address element to
homeAddress and the second to workAddress.

PRO: Simple solution
CON: Interop problems likely

(ii) Require JAX-RPC impls to flag this as an error during WSDL->Java mapping.

PRO: Will prevent the problem for declared headers
CON: More work for JAX-RPC impls, doesn't handle the case when additional undeclared headers are
present that are identical to those declared in the WSDL (see R2739)

(iii) Require JAX-RPC impls to flag this as an error during WSDL->Java mapping and to flag a runtime
error when trying to bind a header that is not unique.

PRO: Prevents the problem for declared and undeclared headers
CON: More work for JAX-RPC impls, may cause problems in systems where multiple identical headers
can be present in the message (possible to alleviate this with a handler though)

(iv) Remove support for binding of headers to method parameters.

PRO: Simple solution
CON: Binding impacts WSDL->Java mapping (parts in the main message can be bound to headers, the
body or attachments), binding headers is a simple solution compared to instantiating a hander.

Environment

Operating System: All
Platform: All

Affected Versions

[current]

Clarification for handler multi-threaded access requested

In reading over the Handler Framework (section 9,) of the JAX-WS 2.2 Rev a (maintenance release 4), I found the Processing Model to be ambiguous about certain aspects of threading as related to a Handler instance.

Specifically: I can find nothing in the specification that spells out whether a container may use the same handler instance in multiple threads at the same time. Section 9.3.3 spells out some thread-related information for implementations, but does not specify this critical piece of information.

Section 9.3.2.3 seems to imply that a container should NOT call the same handler instance in more than one thread at a time since it says '... and may be used to clean up per-MEP resources allocated by a handler'. This implies a single-threaded handler instance in order to have per-MEP resources, presumably in an instance variable (though in theory ThreadLocal could probably be used in this case for per-MEP resources.)

The specification should be specific about whether message processing functions on a handler can be called on a single Handler instance in multiple threads at the same time or not.

Without this specificity, a handler implementation will either be forced to include added complexity to handle multi-threading in handleMessage (for example,) to no purpose if the container uses single-threaded calling of the handler interface, or alternately will assume single threading and be sadly disappointed when a container chooses to use a single Handler instance for all messages - or at least for multiple messages at the same time.

(cont.)
I advise revisiting whether the spec really desires to allow a handler to create/maintain per-MEP resources in a way that would require cleanup per section 9.3.2.3. If it does, I feel the spec should not allow the a handler instance to be multi-threaded. If you feel the handlers should be multi-threaded, it is not clear how the spec intends a handler to maintain per-MEP resources, and why a close() would be necessary.

Test

Test

Environment

Operating System: All
Platform: All

Affected Versions

[current]

Name collision prevention

How will we resolve name collisions if JAX-B does XML and JAX-RPC does WSDL?

Environment

Operating System: All
Platform: All

Affected Versions

[current]

Missing MIME type holders

Need to specify holders for all types.

Environment

Operating System: All
Platform: All

Affected Versions

[current]

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.