Alessio Soldano [http://community.jboss.org/people/asoldano] modified the 
document:

"JBossWS - FAQ"

To view the document, visit: http://community.jboss.org/docs/DOC-13646

--------------------------------------------------------------
** 
 #General General


*** 
 #Which_version_of_App_Server_is_JBossWS_supported_for Which version of App 
Server is JBossWS supported for?


*** 
 #Why_are_my_forum_posts_not_answered_more_quickly Why are my forum posts not 
answered more quickly?


*** 
 #Are_there_any_samples_I_can_look_at Are there any samples I can look at?


*** 
 #What_are_the_advantages_of_JAXWS_over_JAXRPC What are the advantages of 
JAX-WS over JAX-RPC?


** 
 #Development Development


*** 
 #What_do_I_do_if_I_think_there_is_a_bug What do I do if I think there is a bug?


*** 
 #Where_is_the_JBossWS_source_repository Where is the JBossWS source repository?


*** 
 #How_can_I_build_and_install_the_latest How can I build and install the latest?


** 
 #Server Server


*** 
 #How_does_rewriting_of_the_soap_address_in_WSDL_work How does rewriting of the 
soap address in WSDL work?


*** 
 #How_do_I_know_what_endpoint_address_is_being_used How do I know what endpoint 
address is being used?


*** 
 #How_to_use_JDK_JMX_JConsole_with_JBossWS How to use JDK JMX JConsole with 
JBossWS?


*** 
 
#Why_Im_getting_propertyname_is_not_valid_property_on_class_mypackagejaxwsPropertyname
 Why I'm getting "propertyname is not valid property on class 
mypackage.jaxws.Propertyname"?


** 
 #Client Client


*** 
 #How_do_I_generate_the_required_artifacts How do I generate the required 
artifacts?


*** 
 #How_can_I_leverage_the_client_deployment_model How can I leverage the client 
deployment model?


*** 
 #How_can_I_setup_my_client_to_use_a_proxy How can I setup my client to use a 
proxy?


*** 
 #What_client_artifacts_are_thread_safe What client artifacts are thread safe?


*** 
 #What_client_jars_do_I_need What client jars do I need?


** 
 #Tools Tools


*** 
 #Why_do_I_get_a_NullPointerException_when_using_wstools_legacy_JAXRPC_tools 
Why do I get a NullPointerException when using wstools? (legacy JAXRPC tools)


*** 
 #How_can_I_configure_RPC_parameter_names How can I configure RPC parameter 
names?


*** 
 #Customizing_WSDL_Schema_Generation Customizing WSDL Schema Generation


*** 
 #Customizing_WSDL_to_Java_Mapping Customizing WSDL to Java Mapping


** 
 #Others Others


*** 
 #How_to_force_JBossWS_to_generate_SOAP_messages_with_xml_declaration How to 
force JBossWS to generate SOAP messages with xml declaration



h2. General
h3. Which version of App Server is JBossWS supported for?
 http://community.jboss.org/docs/DOC-13569 Supported Target Containers

h3. Why are my forum posts not answered more quickly?
Posts to the  http://www.jboss.com/index.html?module=bb&op=viewforum&f=200 user 
forum will be dealt with at the community's leisure. If your business is such 
that you need to rely on  http://www.jboss.com/services/profsupport qualified 
answers within a known time frame, the forum might not be your preferred 
support channel.

h3. Are there any samples I can look at?
Yes, samples are available from the JBossWS  
http://labs.jboss.com/jbossws/downloads download page.

h3. What are the advantages of JAX-WS over JAX-RPC?
 http://community.jboss.org/docs/DOC-13568 JAX-WS_vs_JAX-RPC


h2. Development
h3. What do I do if I think there is a bug?
*  Check if it works with the  http://community.jboss.org/docs/DOC-13547 latest 
sources. 
*  Checkout the  
http://jira.jboss.com/jira/browse/JBWS?report=com.atlassian.jira.plugin.system.project:roadmap-panel
 Road Map if you are using the latest release or the  
http://jira.jboss.com/jira/browse/JBWS?report=com.atlassian.jira.plugin.system.project:changelog-panel
 Change Log if you are using another one. 
*  Finally, if your bug hasn't been reported yet, please create a  
http://jira.jboss.com/jira/browse/JBWS?report=com.atlassian.jira.plugin.system.project:openissues-panel
 JBossWS JIRA issue and attach a sample deployment that allows us to reproduce 
what you are seeing. Idealy, the sample deployment is a webapp packaged as a 
war that shows the issue when we click on a link. The war should also contain 
the sources.

h3. Where is the JBossWS source repository?
Please refer to  http://community.jboss.org/docs/DOC-13526 Subversion.
h3. How can I build and install the latest?
Please refer to the development guide:  
http://community.jboss.org/docs/DOC-13547 Building_From_Source
h2. Server
h3. How does rewriting of the soap address in WSDL work?
Please refer to the  
https://docs.jboss.org/author/display/JBWS/Advanced+User+Guide advanced user 
guide section of JBossWS 4.x or later, or to the  
http://community.jboss.org/docs/DOC-13972 user guide's Configuration section 
(previous JBossWS versions)

h3. How do I know what endpoint address is being used?
*The endpoint context root is computed as follows*
1.) Use the explicit context root from the web meta data
Can be set in jboss-web.xml and is only relevant for JSE endpoints.
2.) Use the explicit context root from @WebContext.contextRoot
Can only be set on EJB endpoints.
3.) Use the explicit context root from webservices/context-root
Can be set in jboss.xml and is only relevant for EJB endpoints.
4.) Use the explicit context root from port-component/port-component-uri
For backward compatibility, this uses the first token from port-component-uri 
in jboss.xml. It is only relevant for legacy EJB endpoints and should not be 
used.
5.) Use the implicit context root derived from the deployment name
If the context root is not explicitly set we fall back to the simple deployment 
name for both JSE and EJB endpoints. If the endpoint is deployed as part of an 
EAR, the context root is prepended by simple EAR name.

*The URL pattern is computed as follows*
1) Use the explicit url-pattern from the servlet mappings
Must be set in web.xml and is only relevant for JSE endpoints.
2) Use the explicit url-pattern from port-component/port-component-uri
Can be set in jboss.xml and is only relevant for EJB endpoints.
3) Use the explicit url-pattern from @WebContext.urlPattern
Can only be set on EJB endpoints.
4) Use the implicit url-pattern from ejb-name
If the url-pattern for an EJB endpoint is not explicitly set, we fall back to 
the ejb-name.

*Examples*
@Stateless
@WebService
@WebContext( contextRoot = "/webservices" )
@Remote( UserService.class )
public class ExampleServiceBean implements ExampleService {
    ...
}

Will bind to  http://localhost:8080/webservices/ExampleServiceBean 
http://localhost:8080/webservices/ExampleServiceBean
@Stateless
@WebService
@WebContext( contextRoot = "/webservices" , urlPattern="/ExampleService" )
@Remote( UserService.class )
public class ExampleServiceBean implements ExampleService {
    ...
}

Will bind to  http://localhost:8080/webservices/ExampleService 
http://localhost:8080/webservices/ExampleService
The default behavior in jboss 4.0.5 was to use the jar file name followed by 
the ejb name. This can be replicated by using the WebContext annotation e.g.
@WebService
@WebContext( contextRoot = "/jar-file-name" , urlPattern="/ejb-name" )


h3. How to use JDK JMX JConsole with JBossWS?
You must use JDK 5 or above on JBoss server side with the following JVM 
properties set on the commandline:
JAVA_OPTS="$JAVA_OPTS 
-Djavax.management.builder.initial=org.jboss.system.server.jmx.MBeanServerBuilderImpl"
JAVA_OPTS="$JAVA_OPTS -Djboss.platform.mbeanserver"
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote"

Running the jconsole against this configuration will bring up a console that 
incorporates both the JBoss and JVM MBeans.
For further information follow this link:  
http://wiki.jboss.org/wiki/Wiki.jsp?page=JBossMBeansInJConsole 
http://wiki.jboss.org/wiki/Wiki.jsp?page=JBossMBeansInJConsole
For JMX information in JBoss AS in general follow this link:  
http://wiki.jboss.org/wiki/Wiki.jsp?page=FAQJBossJMX 
http://wiki.jboss.org/wiki/Wiki.jsp?page=FAQJBossJMX

*Since 3.2.0*
Finally, please note you can enable the com.sun.managemente.jmxremote property 
on client side when running the JBossWS testsuite simply providing the 
*-Dmanagement=true* parameter on command line.
eg.
mvn -Ptestsuite,jboss510 -Dmanagement=true test

This will cause the maven build to pass the required properties to the maven 
surefire test executor. This way you can usr JConsole to analize memory usage, 
threads, etc. when running the testsuite.

h3. Why I'm getting "propertyname is not valid property on class 
mypackage.jaxws.Propertyname"?
If you are getting the following exception:
org.jboss.ws.WSException: propertyname is not a valid property on class 
mypackage.jaxws.Propertyname
        at 
com.sun.xml.bind.v2.runtime.JAXBContextImpl.getElementPropertyAccessor(JAXBContextImpl.java)
        at 
org.jboss.ws.metadata.acessor.JAXBAccessor$1$1.create(JAXBAccessor.java)

then you are facing the JAX-WS defaults problem. JAX-WS specification gives 
these requirements on Document Wrapped:
>From JAX-WS 2.0 19. April 2006:

3.6.2.1 Document Wrapped:

* Conformance (Default wrapper bean names): In the absence of customizations, 
the wrapper request bean
  class MUST be named the same as the method and the wrapper response bean 
class MUST be named the
  same as the method with a "Response" suffix. The first letter of each bean 
name is capitalized to follow
  Java class naming conventions.
* Conformance (Default wrapper bean package): In the absence of customizations,
  the wrapper beans package UST be a generated jaxws subpackage of the SEI 
package.
* Conformance (Wrapper bean name clash): Generated bean classes must have 
unique names within a pack-
  age and MUST NOT clash with other classes in that package. Clashes during 
generation MUST be reported
  as an error and require user intervention via name customization to correct. 
Note that some platforms  
  do not distiguish filenames based on case so comparisons MUST ignore case.

That means when you are using JBossWS with Document Wrapped you can't have two 
methods with same name inside the package without specifying customizations. 
Thus to solve your problem you have to specify  at least:
  @javax.xml.ws.RequestWrapper(className="package.UniqueClassName")
  @javax.xml.ws.ResponseWrapper(className="package.UniqueClassNameResponse") 

method annotations on all overloaded methods (overloaded here means not 
overloaded in class but overloaded in package).

h2. Client
h3. How do I generate the required artifacts?
JBossWS ships with a set of tools to generate the required JAX-WS artefacts to 
build client implementations. The  http://community.jboss.org/docs/DOC-13542 
wsconsume tool is used to consume the abstract contract (WSDL) and produce 
annotated Java classes (and optionally sources) that define it. You can run 
wsconsume from the command line and from an  http://ant.apache.org/ Apache Ant 
target.
To run wsconsume from the command line, use the scripts available in the +bin+ 
dir of your JBoss AS installation.
Here is an example of how to run wsconsume from the command line, generating 
source and class files in the org.foo package, in a custom directory.
wsconsume -k -o custom -p org.foo Example.wsdl
For further informations and examples, also check the  
http://community.jboss.org/docs/DOC-13544 top-down development strategy in the 
user guide.
Finally, if you need JAX-RPC artifacts generation, please refer to the legacy 
JBossWS tools documentation.

h3. How can I leverage the client deployment model?
The WS client deployment model has many advantages over DII. Most Java 
applications (except the most trivial ones) have a need for registry lookup 
(JNDI) and management (JMX). A very minimal jboss configuration has a tiny 
footprint and provides just that. Therefore, you might want to consider running 
your client app on jboss and manage it through jmx-console and have a layer of 
indirection for resource lookup through JNDI. Additionally, you could then use 
the WS client programming model and obtain preconfigured WS clients from JNDI.

h3. How can I setup my client to use a proxy?
[ http://labs.jboss.com/jbossremoting/docs/guide/ch05.html 5.4.10. HTTP(S) 
Client Invoker - proxy and basic authentication]

h3. What client artifacts are thread safe?
*JAX-RCP*
+javax.xml.rpc.ServiceFactory+ - Just a factory so yes it is thread safe.
+javax.xml.rpc.Service+ - A factory for calls and stubs so it is thread safe.
+javax.xml.rpc.Call+ - Not thread safe, the API allows for multiple method 
invocations for a single WS call.
+javax.xml.rpc.Stub+ - Contains properties that may be thread specific. Stub is 
the interface implemented by the dynamic proxy which delegates to an 
implementation of Call. So, whatever is true for Call also holds for the 
dynamic proxy implementing Stub.

*JAX-WS (JBossWS-Native)
*
+javax.xml.ws.Service+ - Thread safe
The port proxy returned by getPort(..) methods of Service is not thread safe 
instead.

Also check the  http://cxf.apache.org/faq.html Apache CXF FAQ for further info 
when using JBossWS-CXF stack.

h3. What client jars do I need?
For JBossWS 3.x or previous versions, please have a look at  
http://community.jboss.org/docs/DOC-13529 wsrunclient.sh. For JBossWS 4.x or 
later, have a look at the +org.jboss.ws.cxf.jbossws-cxf-client+ or 
+org.jboss.ws.native.jbossws-native-client+ AS7 modules. Those are aggregation 
modules specifying dependencies to other AS7 modules.

h2. Tools
h3. Why do I get a NullPointerException when using wstools? (legacy JAXRPC 
tools)
[wstools] java.lang.NullPointerException
[wstools]     at java.lang.System.arraycopy(Native Method)
[wstools]     at org.apache.xerces.impl.xs.XSModelImpl.getAnnotations(Unknown 
Source)
[wstools]     at 
org.jboss.ws.metadata.wsdl.xmlschema.WSSchemaUtils.copyXSModel(WSSchemaUtils.java:737)
[wstools]     at org.jboss.ws.tools.JavaToXSD.parseSchema(JavaToXSD.java:201)
[wstools]     at 
org.jboss.ws.metadata.wsdl.WSDL11Reader.processTypes(WSDL11Reader.java:227)
[wstools]     at 
org.jboss.ws.metadata.wsdl.WSDL11Reader.processDefinition(WSDL11Reader.java:118)
[wstools]     at 
org.jboss.ws.metadata.wsdl.WSDLDefinitionsFactory.parse(WSDLDefinitionsFactory.java:145)
[wstools]     at 
org.jboss.ws.tools.WSDLToJava.convertWSDL2Java(WSDLToJava.java:121)
[wstools]     at 
org.jboss.ws.tools.helpers.ToolsHelper.handleWSDLToJavaGeneration(ToolsHelper.java:323)
[wstools]     at org.jboss.ws.tools.WSTools.process(WSTools.java:138)
[wstools]     at org.jboss.ws.tools.WSTools.generate(WSTools.java:120)
[wstools]     at org.jboss.ws.tools.ant.wstools.execute(wstools.java:103)
 ...

This is a xerces bug that was fixed in 2.7.0. Make sure you're using at least 
the 2.7.0 xerces jars in your ANT_HOME/lib directory.

h3. How can I configure RPC parameter names?
Parameter and result names can be configured using the JSR-181  
http://community.jboss.org/docs/DOC-13510 @WebParam and  
http://community.jboss.org/docs/DOC-13510 @WebResult annotations:
@WebMethod(operationName = "SecurePing")
@WebResult(name = "Result")
public String ping(
    @WebParam(name = "Ping") PingDocument p, 
    @WebParam(name = "SecHeader", header = true) SecurityHeader secHdr)
{
   log.info("ping: " + p + "," + secHdr);
   return "pong";
}

h3. Customizing WSDL Schema Generation
Both *JBossWS runtime* and *WSProvide tool* use *JAXB* (concretely 
*JAXBRIContext.generateSchema()* method) for WSDL schema generation thus the 
only possible way of schema customization is through 
*javax.xml.bind.annotation.** annotations.
Therefore users that want to customize WSDL schema generation process should be 
familiar with these annotations. We suggest everyone interested in to take a 
look to *Java Types To XML* chapter of *JAXB specification*.
In the case user want to customize the generated WSDL schema and he is not able 
to achieve that through *javax.xml.bind.annotation.** annotations he have 
always the possibility to customize the generated WSDL contract and force 
*JBossWS runtime* to use it via *javax.jws.WebService.wsdlLocation* annotation 
field.

h3. Customizing WSDL to Java Mapping
There are many customizations available when generating Java artifacts from 
WSDL. See  https://jax-ws.dev.java.net/jax-ws-20-fcs/docs/customizations.html 
https://jax-ws.dev.java.net/jax-ws-20-fcs/docs/customizations.html for 
available customizations.
h2. Others
h3. How to force JBossWS to generate SOAP messages with xml declaration
*Since 3.0.2 (Native)*
JBossWS generates no processing instructions in messages by default. However 
there are some SOAP stacks that require xml declaration to be present in 
exchanged SOAP messages. It is possible to turn this feature on for whole 
JBossWS client or server instance by specifying the following JVM property on 
the java command line:
-Djavax.xml.soap.write-xml-declaration=true
--------------------------------------------------------------

Comment by going to Community
[http://community.jboss.org/docs/DOC-13646]

Create a new document in JBoss Web Services at Community
[http://community.jboss.org/choose-container!input.jspa?contentType=102&containerType=14&container=2044]
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to