JAX-RPC handler example
Hi
Does anyone have any example on JAX-RPC handler method? I'm looking for one which
returns more than one attachment. My attachments in this case are images.
Thanks alot.
grazieee
ps: I'm using Weblogic workshop 8.1 sp2
Just figured it out.
Didn't realize there were separate handleRequest() and handleResponse() methods.
We must have implemented our Handler classes in a bit of a nonstandard way...we used two separate classes, put our handler functionality in the "invoke(MessageContext mc)" method, and an indicated which class handled requests and responses in the Deployment Descriptor.
Must be an "Axis" thing.
Sorry for as the inconvenience.
Similar Messages
-
Intercepting SOAP XML message in JAX-RPC Handler and calling a diff method
Is it possible to intercept the SOAP XML message in the JAX-RPC handler and avoid the serialization and deserialization (OR avoid XML data binding)
Here is a more detail question
My web service has two methods
1. One Method which accepts Java Object (this object is mapped with a Schema
Complex Type Element in my WSDL file)
2. Second method which accept simple String type.
I want my web service client to send java object (using the first method), so that the Input gets validate in the WSDL itself (before it hits the actual web service) but once the request gets validated i want to pass that converted SOAP XML String (on the Server side using JAX-RPC handler) to the Second method.The answer to this is that the WSDL had
elementFormDefault="qualified"
in the schema.
Changing to unqualified resulted in the desired output.
Note: The service was changed to handle both cases. -
Jax-rpc handler for certain Web methods
Hi, all
Is there any way to deploy a handler for certain method of the web service?
For example, I have a web service calls testService. This testService has two methods (A and B) which can be accessed by the client. How could I specify the handler is only for method A? How the WSDD will look like?
Thanks for your help. /danHi,
I am facing a similar kind of problem. If maybe I could look at your wsdl and wsdd files, maybe we could come up with a solution. Also my email id is [email protected]
Feel free to mail me and maybe we can exchange ideas. Thanks. -
How to pass SOAP Attachments with JAX-RPC Web Service
I'm confused...
This sample shows how to send/receive SOAP attachments by using the JAX-RPC Handler mechanism. Can somebody confirm if this is the preferred way to do this. I've seen an example wich does something like:
public interface AttachmentService extends Remote {
public String storeDocumentService(javax.activation.DataHandler dh, String filename) throws RemoteException;
}and then uses JAX-RPC utilities to create wsdl, stubs and stuff. Does this have the same result, as what the OTN example shows (from an architecture perspective?
Thx,
Jan.Well, how an attachment is processed depends on your application logic...if your application logic requires to processing attachments and verify it before processing the SOAP message, handlers could be better option.
If you need to process the attachment while processing the SOAP message, you can do it in the service implementation class.
In both the cases you need to get access to SOAPMessage object and from there get the attachments with getAttachments method. -
Is JAX-RPC compatible with Apache Axis?
We are starting a new project, and our design goal is to develop server-side API that is the exposed via Web Services. The goal is to have them run within the Sun Reference Implementation, and within Apache Axis.
My question is, if we develop to the JAX-RPC Specification, with occasional SAAJ calls for attachment processing, will our Web Services run within Apache Axis? In other words, it Apache Axis JAX-RPC and SAAJ-compatible?It seems that the way they handle Attachments is different. Apache Axis seems to have its own way of handling Attachments, even though it is possible that they also support the standard JAX-RPC way.
Generally speaking, I am not very happy with how JAX-RPC handles attachments, but this is a different subject. -
How to generate a soapFault from jax-rpc hander
Hello,
I'm building a custom authentication jax-rpc handler (OAS 10.1.3.1) that is supposed to make the service to return a fault if some conditions are not met.
Here is what we need to return:
<Fault><faultcode>invalidIP</faultcode><faultstring>IP is not known</faultstring><faultactor></faultactor></Fault>
I tried to throw a SOAPFaultException, but all the is returned back is the original SOAP request.
How should it be implemented?
if ( !res ) {
Detail detail = null;
try{
detail = SOAPFactory.newInstance().createDetail();
}catch(SOAPException ex){
ex.printStackTrace();
throw new javax.xml.rpc.soap.SOAPFaultException(
new javax.xml.namespace.QName("env.Server"),
"IP is not known", "NO ACTOR", detail);
}Hello ,
I think you need to use the Work item Change set
cube of TFS .You need to go through the below page
http://msdn.microsoft.com/en-us/library/ms244678.aspx
Ahsan Kabir Please remember to click Mark as Answer and Vote as Helpful on posts that help you. This can be beneficial to other community members reading the thread. http://www.aktechforum.blogspot.com/ -
Hi All,
I am trying to get a simple example client handler to work using JAX-RPC DII.
The web serivice is a simple one that just returns Hello + name..
Here is the client code:
public class Main {
* @param args the command line arguments
private static String BODY_NAMESPACE_VALUE = "http://helloservice/";
private static String NS_XSD = "http://www.w3.org/2001/XMLSchema";
private static String ENCODING_STYLE_PROPERTY = "javax.xml.rpc.encodingstyle.namespace.uri";
private static String URI_ENCODING ="http://schemas.xmlsoap.org/soap/encoding/";
public static void main(String[] args) {
try {
String url ="http://localhost:8080/HelloService/MyHelloService";
QName serviceName = new QName(BODY_NAMESPACE_VALUE,"MyHelloServiceService");
QName portTypeName = new QName(BODY_NAMESPACE_VALUE, "MyHelloServicePort");
ServiceFactory factory = ServiceFactory.newInstance();
Service service = factory.createService(serviceName);
Call call = service.createCall();
call.setPortTypeName(portTypeName);
call.setOperationName(new QName(BODY_NAMESPACE_VALUE, "sayHello"));
call.setTargetEndpointAddress(url);
call.setProperty(ENCODING_STYLE_PROPERTY,"");
//call.setProperty(ENCODING_STYLE_PROPERTY,URI_ENCODING);
call.setProperty(Call.OPERATION_STYLE_PROPERTY, "rpc");
QName QNAME_TYPE_STRING = new QName(NS_XSD, "string");
call.setReturnType(QNAME_TYPE_STRING);
call.addParameter("name", QNAME_TYPE_STRING, ParameterMode.IN);
String[] params = { "Murph!" };
HandlerRegistry hr = service.getHandlerRegistry();
List<HandlerInfo> list = new ArrayList<HandlerInfo>();
HandlerInfo hi = new HandlerInfo(ClientSOAPHandler1.class, null,null);
list.add(hi);
HandlerInfo hi2 = new HandlerInfo(ClientLogicalHandler1.class, null,null);
list.add(hi2);
hr.setHandlerChain(portTypeName, list);
String result = (String)call.invoke(params);
System.out.println(result);
} catch (ServiceException e)
e.printStackTrace();
catch (RemoteException e)
e.printStackTrace();
}And the code for the Handlers:
public class ClientSOAPHandler1 extends ClientSOAPHandlerBase
private final String HANDLERNAME="ClientSOAPHandler1";
public ClientSOAPHandler1(){
super();
super.setHandlerName(HANDLERNAME);
import javax.xml.transform.Source;
import java.util.Set;
import java.util.TreeSet;
import javax.annotation.PreDestroy;
import javax.annotation.PostConstruct;
import javax.xml.namespace.QName;
import javax.xml.ws.handler.MessageContext;
import javax.xml.ws.handler.soap.SOAPHandler;
import javax.xml.ws.handler.soap.SOAPMessageContext;
import javax.xml.soap.SOAPMessage;
import java.io.ByteArrayOutputStream;
public class ClientSOAPHandlerBase implements SOAPHandler<SOAPMessageContext>
private String handlerName=null;
public void setHandlerName(String h) {
this.handlerName=h;
public String getHandlerName() {
return this.handlerName;
@PostConstruct
public void myInit() {
System.out.println("------------------------------------");
System.out.println("in "+handlerName+":myInit");
System.out.println("exiting "+handlerName+":myInit");
System.out.println("------------------------------------");
@PreDestroy
public void myDestroy() {
System.out.println("------------------------------------");
System.out.println("in "+handlerName+":myDestroy");
System.out.println("exiting "+handlerName+":myDestroy");
System.out.println("------------------------------------");
public Set<QName> getHeaders() {
return new TreeSet<QName>();
public boolean handleMessage(SOAPMessageContext context) {
System.out.println("------------------------------------");
System.out.println("in "+handlerName+":handleMessage");
boolean direction= ((Boolean)context.get(SOAPMessageContext.MESSAGE_OUTBOUND_PROPERTY)).booleanValue();
if (direction) {
System.out.println("direction = outbound");
} else {
System.out.println("direction = inbound");
dumpMsg(context);
System.out.println("exiting "+handlerName+":handleMessage");
System.out.println("------------------------------------");
return true;
public void close(MessageContext context) {
System.out.println("------------------------------------");
System.out.println("in "+handlerName+":close");
System.out.println("exiting "+handlerName+":close");
System.out.println("------------------------------------");
public boolean handleFault(SOAPMessageContext context) {
System.out.println("------------------------------------");
System.out.println("in "+handlerName+":handleFault");
System.out.println("exiting "+handlerName+":handleFault");
System.out.println("------------------------------------");
return true;
public void dumpMsg(MessageContext context) {
try {
SOAPMessage soapmsg = ((SOAPMessageContext)context).getMessage();
System.out.println("MSG="+getMsgAsString(soapmsg));
} catch (Exception e) {
e.printStackTrace();
return;
public String getMsgAsString(SOAPMessage message) {
String msg = null;
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
message.writeTo(baos);
msg = baos.toString();
} catch (Exception e) {
e.printStackTrace();
return msg;
}The output is as follows:
run:
Hello Murph!
BUILD SUCCESSFUL (total time: 1 second)
This should print out the various println statements in the Handler, but it doesnt :(- How come? What am I missing?
I have searched everywhere trying to find the proper way to get a client side handler to work and have had luck. Additionally, I really really need this to work....if anyone could provide help, it would be VERY appreciated...pretty please
Thanks,
DanielAny Ideas Anyone?????
-
[Beginner] Help! How to change the packet name for an jax-rpc example
Hi
I am new to the JWSDP, I tried to build and deploy the helloservice application (the example in
tutorial), it works fine. But I want to change the packet name from helloservice to books, it
returns error message during the building process.
Here is what I did.
I changed the folder name from helloservice to books.
In helloIF.java and helloImp1.java, changed to "package books"
In build.properties:
example=books
war.path=${tut.root}/examples/jaxrpc/books/${dist}/${deployable.war}
context.path=${hello.context}
portable.war=${context.path}-portable.war
deployable.war=${context.path}.war
In jaxrpc-ri.xml,
<?xml version="1.0" encoding="UTF-8"?>
<webServices
xmlns="http://java.sun.com/xml/ns/jax-rpc/ri/dd"
version="1.0"
targetNamespaceBase="urn:foo"
typeNamespaceBase="urn:foo"
urlPatternBase="/ws">
<endpoint
name="MyHello"
displayName="HelloWorld Service"
description="A simple web service"
interface="books.HelloIF"
model="/WEB-INF/model.gz"
implementation="books.HelloImpl"/>
<endpointMapping
endpointName="MyHello"
urlPattern="/hello"/>
</webServices>
In config-interface.xml,
<?xml version="1.0" encoding="UTF-8"?>
<configuration
xmlns="http://java.sun.com/xml/ns/jax-rpc/ri/config">
<service
name="MyHelloservice"
targetNamespace="urn:foo"
typeNamespace="urn:foo"
packageName="books">
<interface name="books.HelloIF"/>
</service>
</configuration>
When I run "ant build", it returns the following error message:
run-wscompile:
[echo] Running wscompile:
[echo] C:\jwsdp-1.3\apache-ant\../jaxrpc/bin/wscompile.bat -define -d bui
ld -nd build -classpath build config-interface.xml -model build/mo
del.gz
[exec] error parsing configuration file: XML parsing error: com.sun.xml.rpc
.sp.ParseException:1: com.sun.xml.rpc.sp/P-067
[exec] Result: 1
All I want to do is just change the packet name, anyone know how to do it?
Please help me.
Thank you.For future reference, please post JAXRPC related questions to [email protected]
There is something syntatically wrong with your config.xml. Try reverting back to the original, and try that. Then try modifying it again making sure to only change the packageName. -
Cannot Run JAX-RPC Hello Service Example
Hello,
I am trying to run the helloservice example from the Java Web Services Tutorial v 1.3 (Chapter 12). Upon running the ant build task, I get the following error.
BUILD FAILED
file:C:/jwstutorial13/examples/jaxrpc/common/targets.xml:151: Warning: Could not
find file C:\jwstutorial13\examples\jaxrpc\helloservice\build\model.gz to copy.
I tried running the ant generate-sei-service task separately. This appears to complete successfully, yet, there is no model file generated.
Any help/suggestions/insights would be very much appreciated!
Thanks,
SheilaThanks!
I did that before posting my original message. I'm obviously missing something (noting jumps out at me, as far as being wrong.)
My files look like this:
File: build.xml (C:\jwstutorial13\examples\jaxrpc\helloservice\build.xml)
<!DOCTYPE project [
<!ENTITY jaxrpctargets SYSTEM "../common/targets.xml">
]>
<project name="jaxrpc-tutorial" default="build" basedir=".">
<property file="../../common/build.properties"/>
<property file="../common/build.properties"/>
<property file="build.properties"/>
&jaxrpctargets;
<target name="build" depends="build-service"
description="Executes the targets needed to build the service.">
</target>
</project>
==================================================================================
File: build.properties (C:\jwstutorial13\examples\jaxrpc\helloservice\build.properties).
example=helloservice
war.path=${tut.root}/examples/jaxrpc/helloservice/${dist}/${deployable.war}
context.path=${hello.context}
portable.war=${context.path}-portable.war
deployable.war=${context.path}.war
==================================================================================
File: build.properties (C:\jwstutorial13\examples\jaxrpc\common\build.properties)
# This file contains properties common to the tutorial examples
# for JAX-RPC.
# tut.root=C:/wspack-docs
tut.root=${tutorial.install}
hello.context=hello-jaxrpc
secure.context=secure-jaxrpc
mutualauth.context=secure-mutualauth
url.pattern=/hello
key.store=${tutorial.home}/jwstutorial13/examples/jaxrpc/mutualauth/keystore.jks
key.store.password=changeit
trust.store=${tutorial.home}/jwstutorial13/examples/jaxrpc/mutualauth/cacerts.jks
trust.store.password=changeit
hello.endpoint=http://${host}:${port}/${hello.context}${url.pattern}
secure.endpoint=http://${host}:${port}/${secure.context}${url.pattern}
mutualauth.endpoint=https://${host}:${secure.port}/${mutualauth.context}${url.pattern}
build=build
src=src
dist=dist
client.jar=client.jar
model.file=model.gz
config.wsdl.file=config-wsdl.xml
config.interface.file=config-interface.xml
jwsdp.shared=${jwsdp.home}/jwsdp-shared
jaxp.home=${jwsdp.home}/jaxp
jaxrpc.home=${jwsdp.home}/jaxrpc
saaj.home=${jwsdp.home}/saaj
wscompile.dir=${jaxrpc.home}/bin
wsdeploy.dir=${jaxrpc.home}/bin
javamail.jar=${jwsdp.shared}/lib/mail.jar
jaf.jar=${jwsdp.shared}/lib/activation.jar
jaxp-api.jar=${jaxp.home}/lib/jaxp-api.jar
dom.jar=${jaxp.home}/lib/endorsed/dom.jar
sax.jar=${jaxp.home}/lib/endorsed/sax.jar
xalan.jar=${jaxp.home}/lib/endorsed/xalan.jar
xercesImpl.jar=${jaxp.home}/lib/endorsed/xercesImpl.jar
jaxrpc-api.jar=${jaxrpc.home}/lib/jaxrpc-api.jar
jaxrpc-impl.jar=${jaxrpc.home}/lib/jaxrpc-impl.jar
jaxrpc-spi.jar=${jaxrpc.home}/lib/jaxrpc-spi.jar
commons-logging.jar=${jwsdp.shared}/lib/commons-logging.jar
saaj-api.jar=${saaj.home}/lib/saaj-api.jar
saaj-impl.jar=${saaj.home}/lib/saaj-impl.jar
relaxngDatatype.jar=${jwsdp.shared}/lib/relaxngDatatype.jar
xsdlib.jar=${jwsdp.shared}/lib/xsdlib.jar
jax-qname.jar=${jwsdp.shared}/lib/jax-qname.jar
ant.jar=${jwsdp.home}/apache-ant/lib/ant.jar
==================================================================================
This is where I thought the problem might be, but I can't determine what's wrong. The pathelements in this file, were set in build.properties ((C:\jwstutorial13\examples\jaxrpc\common\build.properties), referenced above.
File: targets.xml (C:\jwstutorial13\examples\jaxrpc\common\targets.xml)
<!-- targets.xml: Referenced by the build.xml files, this file
contains targets common to all of the jaxrpc examples. -->
<path id="compile.classpath">
<pathelement location="${javamail.jar}"/>
<pathelement location="${jaf.jar}"/>
<pathelement location="${jaxp-api.jar}"/>
<pathelement location="${dom.jar}"/>
<pathelement location="${sax.jar}"/>
<pathelement location="${xalan.jar}"/>
<pathelement location="${xercesImpl.jar}"/>
<pathelement location="${jaxrpc-api.jar}"/>
<pathelement location="${jaxrpc-impl.jar}"/>
<pathelement location="${jaxrpc-spi.jar}"/>
<pathelement location="${commons-logging.jar}"/>
<pathelement location="${saaj-api.jar}"/>
<pathelement location="${saaj-impl.jar}"/>
<pathelement location="${relaxngDatatype.jar}"/>
<pathelement location="${xsdlib.jar}"/>
<pathelement location="${jax-qname.jar}"/>
<pathelement location="${ant.jar}"/>
<pathelement location="${build}/shared"/>
</path>
<path id="run.classpath">
<path refid="compile.classpath"/>
<pathelement location="${dist}/${client.jar}"/>
</path>
<taskdef name="deploy" classname="org.apache.catalina.ant.DeployTask" />
<taskdef name="undeploy" classname="org.apache.catalina.ant.UndeployTask" />
<taskdef name="list" classname="org.apache.catalina.ant.ListTask" />
<taskdef name="start" classname="org.apache.catalina.ant.StartTask" />
<taskdef name="stop" classname="org.apache.catalina.ant.StopTask" />
<taskdef name="install" classname="org.apache.catalina.ant.InstallTask"/>
<taskdef name="reload" classname="org.apache.catalina.ant.ReloadTask"/>
<taskdef name="remove" classname="org.apache.catalina.ant.RemoveTask"/>
<target name="install" description="Install web application"
depends="build">
<install url="${url}" username="${username}" password="${password}"
path="/${context.path}" war="file:${example.path}/${build}"/>
</target>
<target name="deploy"
description="Deploys a Web application">
<deploy url="${url}" username="${username}" password="${password}"
path="/${context.path}" war="file:${war.path}"
/>
</target>
<target name="undeploy"
description="Undeploys a Web application">
<undeploy url="${url}" username="${username}" password="${password}"
path="/${context.path}"
/>
</target>
<target name="redeploy"
description="Undeploys and deploys a Web aplication">
<antcall target="undeploy" />
<antcall target="deploy" />
</target>
<target name="list"
description="Lists Web applications">
<echo message="Listing the applications...."/>
<list
url="${url}"
username="${username}"
password="${password}"
/>
</target>
<target name="start"
description="Starts a Web application">
<echo message="Starting the application...."/>
<start
url="${url}"
username="${username}"
password="${password}"
path="/${context.path}"
/>
</target>
<target name="stop"
description="Stops a Web application">
<echo message="Stopping the application...."/>
<stop
url="${url}"
username="${username}"
password="${password}"
path="/${context.path}"
/>
</target>
<target name="prepare"
description="Creates the build directory" >
<echo message="Creating the required directories...." />
<mkdir dir="${build}/${example}" />
</target>
<target name="prepare-dist"
description="Creates the dist directory" >
<echo message="Creating the required directories...." />
<mkdir dir="${dist}" />
</target>
<target name="set-wscompile" >
<condition property="wscompile" value="${wscompile.dir}/wscompile.bat">
<os family="windows"/>
</condition>
<condition property="wscompile" value="${wscompile.dir}/wscompile.sh">
<not>
<os family="windows"/>
</not>
</condition>
</target>
<target name="set-wsdeploy" >
<condition property="wsdeploy" value="${wsdeploy.dir}/wsdeploy.bat">
<os family="windows"/>
</condition>
<condition property="wsdeploy" value="${wsdeploy.dir}/wsdeploy.sh">
<not>
<os family="windows"/>
</not>
</condition>
</target>
<target name="compile-service" depends="prepare"
description="Compiles the server-side source code">
<echo message="Compiling the server-side source code...."/>
<javac srcdir="${src}"
destdir="${build}"
includes="*.java"
excludes="*Client.java">
<classpath refid="compile.classpath"/>
</javac>
</target>
<target name="setup-web-inf"
description="Copies files to build/WEB-INF">
<echo message="Setting up ${build}/WEB-INF...."/>
<delete dir="${build}/WEB-INF" />
<copy todir="${build}/WEB-INF/classes/${example}">
<fileset dir="${build}/${example}" />
<fileset dir="${build}/${example}" />
</copy>
<copy file="${build}/${model.file}" todir="${build}/WEB-INF" />
<copy file="web.xml" todir="${build}/WEB-INF" />
<copy file="jaxrpc-ri.xml" todir="${build}/WEB-INF" />
</target>
<target name="package-service" depends="prepare-dist"
description="Packages the WAR file">
<echo message="Packaging the WAR...."/>
<delete file="${dist}/${portable.war}" />
<jar jarfile="${dist}/${portable.war}" >
<fileset dir="${build}" includes="WEB-INF/**" />
</jar>
</target>
<target name="process-war" depends="set-wsdeploy"
description="Runs wsdeploy to generate the ties and
create a deployable WAR file">
<delete file="dist/${deployable.war}" />
<antcall target="run-wsdeploy">
<param name="param1" value="-o dist/${deployable.war} dist/${portable.war}"/>
</antcall>
</target>
<target name="run-wscompile" depends="prepare,set-wscompile"
description="Runs wscompile">
<echo message="Running wscompile:"/>
<echo message=" ${wscompile} ${param1}"/>
<exec executable="${wscompile}">
<arg line="${param1}"/>
</exec>
</target>
<target name="run-wsdeploy" depends="prepare,set-wsdeploy"
description="Runs wsdeploy">
<echo message="Running wsdeploy:"/>
<echo message=" ${wsdeploy} ${param1}"/>
<exec executable="${wsdeploy}">
<arg line="${param1}"/>
</exec>
</target>
<target name="generate-sei-service"
description="Runs wscompile to generate the model file">
<antcall target="run-wscompile">
<param name="param1" value="-define -d ${build} -nd ${build}
-classpath ${build} ${config.interface.file}
-model ${build}/${model.file}"/>
</antcall>
<delete file="${build}/MyHelloService.wsdl"/>
</target>
<target name="generate-interface"
description="Runs wscompile to generate the service endpoint
interface">
<antcall target="run-wscompile">
<param name="param1" value="-import -d ${build} -nd ${build}
-f:norpcstructures -classpath ${build} ${config.wsdl.file}"/>
</antcall>
</target>
<target name="generate-stubs"
description="Runs wscompile to generate the client stub classes">
<antcall target="run-wscompile">
<param name="param1" value="-gen:client -d ${build}
-classpath ${build} ${config.wsdl.file}"/>
</antcall>
</target>
<target name="compile-client" depends="prepare"
description="Compiles the client-side source code" >
<echo message="Compiling the client source code...."/>
<javac srcdir="${src}"
destdir="${build}"
includes="*.java">
<classpath refid="compile.classpath"/>
<classpath path="${build}" />
</javac>
</target>
<target name="package-client" depends="prepare-dist"
description="Builds the JAR file that contains the client">
<echo message="Building the client JAR file...."/>
<delete file="${dist}/${client.jar}" />
<jar jarfile="${dist}/${client.jar}" >
<fileset dir="${build}" />
</jar>
</target>
<target name="package-dynamic" depends="prepare-dist"
description="Builds the JAR file that contains the dynamic proxy client">
<echo message="Building the client JAR file...."/>
<delete file="${dist}/${client.jar}" />
<jar jarfile="${dist}/${client.jar}" >
<fileset dir="${build}" includes="**/HelloClient.class" />
<fileset dir="${build}" includes="**/HelloIF.class" />
</jar>
</target>
<target name="build-service" depends="clean,compile-service,generate-sei-service,
setup-web-inf,package-service,process-war"
description="Executes the targets needed to build the service.">
</target>
<target name="build-static" depends="clean,generate-stubs,
compile-client,package-client"
description="Executes the targets needed to build a static stub client.">
</target>
<target name="build-dii" depends="clean,prepare,compile-client,package-client"
description="Executes the targets needed to build a DII client.">
</target>
<target name="build-dynamic" depends="clean,prepare,generate-interface,
compile-client,package-dynamic"
description="Executes the targets needed to build a dynamic proxy client.">
</target>
<target name="build-webclient" depends="clean,generate-stubs"
description="Executes the targets needed to build a web client.">
</target>
<target name="run-client"
description="Runs a stand-alone (non-J2EE) client">
<java classname="${client.class}" fork="yes" >
<arg line="${endpoint.address}" />
<classpath refid="run.classpath" />
</java>
</target>
<target name="run-secure-client"
description="Runs a client with basic authentication over SSL">
<java classname="${client.class}" fork="yes" >
<arg line="${username} ${password} ${endpoint.address}" />
<classpath refid="run.classpath" />
</java>
</target>
<target name="run-mutualauth-client"
description="Runs a client with mutual authentication over SSL">
<java classname="${client.class}" fork="yes" >
<arg line="${key.store} ${key.store.password}
${trust.store} ${trust.store.password}
${endpoint.address}" />
<classpath refid="run.classpath" />
</java>
</target>
<target name="clean"
description="Removes the build directory">
<delete dir="${build}" />
</target>
<target name="listprops" depends="set-wscompile"
description="Displays values of some of the properties of this
build file">
<echo message="jaxrpc.home = ${jaxrpc.home}" />
<echo message="wscompile = ${wscompile}" />
<echo message="build = ${build}" />
<echo message="src = ${src}" />
<echo message="dist = ${dist}" />
<echo message=" " />
<echo message="example = ${example}" />
<echo message="client.jar = ${client.jar}" />
<echo message="client.class = ${client.class}" />
<echo message=" " />
<echo message="host = ${host}" />
<echo message="port = ${port}" />
<echo message="secure.port = ${secure.port}" />
<echo message="trust.store = ${trust.store}" />
<echo message="trust.store.password = ${trust.store.password}" />
<echo message=" " />
<echo message="username = ${username}" />
<echo message="password = ${password}" />
<echo message="url = ${url}" />
<echo message=" " />
<echo message="context.path = ${context.path}" />
<echo message="secure.context.path = ${secure.context.path}" />
<echo message="url.pattern = ${url.pattern}" />
<echo message="endpoint.address = ${endpoint.address}" />
<echo message="secure.endpoint = ${secure.endpoint}" />
<echo message=" " />
<echo message="war.path = ${war.path}" />
<echo message="portable.war = ${portable.war}" />
<echo message="deployable.war = ${deployable.war}" />
</target>
==================================================================================
File: targets.xml ( C:\jwstutorial13\examples\common\targets.xml)
<taskdef name="list" classname="org.apache.catalina.ant.ListTask"/>
<taskdef name="install" classname="org.apache.catalina.ant.InstallTask"/>
<taskdef name="reload" classname="org.apache.catalina.ant.ReloadTask"/>
<taskdef name="remove" classname="org.apache.catalina.ant.RemoveTask"/>
<taskdef name="deploy" classname="org.apache.catalina.ant.DeployTask"/>
<taskdef name="undeploy" classname="org.apache.catalina.ant.UndeployTask"/>
<target name="list" description="List web applications" >
<list url="${url}" username="${username}" password="${password}" />
</target>
<target name="install" description="Install web application"
depends="build">
<install url="${url}" username="${username}" password="${password}"
path="/${context.path}" war="file:${build}"/>
</target>
<target name="reload" description="Reload web application"
depends="build">
<reload url="${url}" username="${username}" password="${password}"
path="/${context.path}"/>
</target>
<target name="remove" description="Remove web application">
<remove url="${url}" username="${username}" password="${password}"
path="/${context.path}"/>
</target>
<target name="package"
description="Packages the WAR file">
<echo message="Packaging the WAR...."/>
<delete file="dist/${war.file}" />
<jar jarfile="dist/${war.file}" >
<fileset dir="${build}" />
</jar>
</target>
<target name="deploy" description="Deploy a Web application">
<deploy url="${url}" username="${username}" password="${password}"
path="/${context.path}" war="file:/${example.path}/dist/${war.file}"
/>
</target>
<!--<target name="deploy" description="Deploy a Web application">
<deploy url="${url}" username="${username}" password="${password}"
path="/${context.path}" war="file:/${example.path}/dist/${war.file}"
/>
</target> -->
<target name="undeploy" description="Undeploy web application">
<undeploy url="${url}" username="${username}" password="${password}"
path="/${context.path}"/>
</target>
==================================================================================
File: build.properties (C:\jwstutorial13\examples\common\build.properties)
tutorial.home=C:/jwstutorial13
tutorial.install=${tutorial.home}
username=******
password=********
host=localhost
port=8080
secure.port=8443
url=http://${host}:${port}/manager
==================================================================================
Finally, here is how I've got my PATH Environmental Variable Set:
PATH:
%JWSDP_HOME%\apache-ant\bin;%JWSDP_HOME%\jwsdp-shared\bin;%JWSDP_HOME%\bin;%JAVA_HOME%\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\system32\WBEM;C:\Program Files\Microsoft SQL Server\80\Tools\Binn\
I set this up according to the instructions at the beginning of the tutorial.
JWSDP_HOME: C:\jwsdp-1.3
JAVA_HOME: C:\j2sdk1.4.1_05
Thanks again for your help.
Sheila -
Handling Dates in JAX RPC Webservices
Im converting an old application over to the JAX RPC webservices. We have a situation where the server and the client use the same bean jar file. When I connect up to my webservice the beans it dumps out have XMLGregorianCalendar as their datatype, if I try to feed this back to use this in the webservice, I have all sorts of issues for one, it's not serializable. So, how should I handle dates that I need to have the same datatype on the client and server?
Hi.
check following hope you will help
http://blogs.oracle.com/wssi/entry/introduction_to_oracle_web_services -
Help install jwsdp 1.0 and run JAX-RPC example
I installed jwsdp1.0 today and I tried to run the Hello world example for JAX-RPC (http://java.sun.com/webservices/docs/1.0/tutorial/doc/JAXRPC3.html).
The problem is with any command passed at the console (ant command or startup (tomcat), deploytool, etc) I always get the following message : Exception in thread "main" java.lang.NoClassDefFoundError: Files/Microsoft.
The operating system in win XP and jre is 1.4.0.
The variables I used are JAVA_HOME (D:\Java\j2sdk1.4.0)
and JWSPD_HOME (d:\java\jwsdp-1_0). Both bin folder are setup on the path variable (%JAVA_HOME%\bin;%JWSPD_HOME%\bin).
Help will be very much appreciatedMaybe this is just a typo in your post, but the variable name should be JWSDP_HOME, not JWSPD_HOME.
Mike -
Hello
I am using Java EE 5 and Glassfish.
Currently I am developing an application using JAX-RPC (1.4 style). This is NOT JAX-WS or older tech where everything had to be done "by hand". its something of a halfbreed invented at the time.
I have a service that looks something like the example, although much more complicated :)
package samples.webservices.jaxrpc.simple;
public class HelloImpl implements HelloIF {
public String message = "Hello ";
public String sayHello(String s) {
return message + s;
}The IF class interface extends Remote
I would like to get the currently authenticated users user name for the specific RPC call. In older versions it was simple because you needed to deal with the SOAP envelope anyway and in JAX-WS it seems equally simple. but in the version I am using it seems straight out impossible to get the MessageContext or similar.
Can anyone please help me? I have read an awful lot of web pages without finding the answer.
Thanks in advance
/ StefanOk after much reading, thinking and testing I was able to solve the problem (not very pretty but hopefully working).
Create an extra soap handler old school way
public class MySOAPHandler extends GenericHandler {
public boolean handleRequest(MessageContext context) {
Object o = context.getProperty("com.sun.xml.rpc.server.http.HttpServletRequest");
if ( o != null ) {
currentuser = ((HttpServletRequest)o).getRemoteUser();
}Then register this in webservicese.xml
<handler>
<handler-name>My SOAP Handler</handler-name>
<handler-class>full.class.path.MySOAPHandler</handler-class>
</handler> Hope this helps someone else out there :) -
Jax-rpc and xsd x:any/
I am using JAX-RPC to build a client for a web service. Some of the operations on the web service include an <x:any/> element in the response. JAX-RPC generates a corresponding javax.xml.soap.SOAPElement for each of the elements defined as <x:any/>.
The web service operation, that I am building the client for, is truly generic. It takes in a parameter that is a sql query string and so the respones for the web service could and will be many different sizes and shapes. I'm curious if there are any frameworks that will aid in my handling of the SOAPElement objects. I am currently the JAX-RPC that comes with apache AXIS 1.3 for the web service client.
Does JAX-RPC or AXIS provide functionality for handling the SOAPElements so that I do not have to write code for each custom query that may be invoked on this web service? I would prefer handIe this in a more generic and abstracted manner. I realize that I can traverse the SOAPElement, but this seems very ugly.
Are there examples of how this is usually done.?Thanks. I am using Hibernate as well. Unfortunately, I did not develop the web service itself and are only tasked with invoking it. We have no control over how the web service is defined or developed. So, I am forced to deal with the SOAPEnvelope. Any insight as to frameworks that will help parse the SOAPEnvelope would be appeciated
-
I have read a number of different tutorials about Web services and JAX-RPC, and have to come the conclusion that JAX-RPC is the correct approach to use for my project. Most of the examples I have seen involve invoking services which perform a 'one-shot' action e.g. get a Stock Quote.
My first question is that I am not sure for such 'one-shot' services, how much support there is in the API for sending/receiving arrays of data items. e.g. sending a user's data to a web service which includes an associated list of phone numbers.
Further if I wanted to send user's data which included an array of nested objects, would I have to implement a serializer/deserialiser plugin?
My main concern really is how best to handle a batch of requests to the service. My current thought is to use JAX-RPC with an xml document attachment - listing of a number of user's data and their parameters. A 'batch service' would return a response immediately then work through the document and invoke the existing 'single shot' service - which will be hosted on the same web server.
Is this approach which brings together a number of different ideas from the various JAX-RPC tutorials viable? Are they any better alternatives?
For example would it be better to implement a JAX-RPC for the single shot service requests and use JAXM for batch service requests? (On the server-side I would still be expecting the batch service to re-use the single-shot service). Can JAXM and JAX-RPC services co-exist on the same web server? I realise that there would be WSDL generated for the JAX-RPC service alone and so for a client developer there will be an inconsistency in terms of how the Web service is accessed.
Thanks in anticipationHello, I'll try and go through your questions one at a time:
My first question is that I am not sure for such 'one-shot' services, how much support there is in the API for
sending/receiving arrays of data items. e.g. sending a user's data to a web service which includes an
associated list of phone numbers.JAX-RPC has built in support for List type operations. There is no problem sending Arrays of information over the wire. If you were sending an Object of type User, for instance, there would be no problem with User having a List of PhoneNumber types objects as part of it's structure.
Further if I wanted to send user's data which included an array of nested objects, would I have to implement
a serializer/deserialiser plugin?Condintional No. If the nested objects contained only data structures that JAX-RPC knows how to deal with, your fine (things like java.lang.String or java.lang.Integer). However, if your nested objects contain types that JAX-RPC does not know how to deal with (i.e. java.sql.TimeStamp), you will have to write a custom serializer/deserializer just like you would if you were passing those objects without them being nested.
My main concern really is how best to handle a batch of requests to the service. My current thought is to
use JAX-RPC with an xml document attachment - listing of a number of user's data and their parameters.
A 'batch service' would return a response immediately then work through the document and invoke the
existing 'single shot' service - which will be hosted on the same web server.
Is this approach which brings together a number of different ideas from the various JAX-RPC tutorials
viable? Are they any better alternatives?As per above you shouldn't have to send an xml document attachment, but I guess you could. Also, for batch processing type tasks you probably want to look at the asychronous mode mentioned in the JAX-RPC part of the JWSDP tutorial.
For example would it be better to implement a JAX-RPC for the single shot service requests and use
JAXM for batch service requests? (On the server-side I would still be expecting the batch service to re-use
the single-shot service). Can JAXM and JAX-RPC services co-exist on the same web server? I realise
that there would be WSDL generated for the JAX-RPC service alone and so for a client developer there
will be an inconsistency in terms of how the Web service is accessed.Well, it really is up to you at this point. I assume that you want/need to use web services for access (as opposed to EJBs or any other method). So, I would look at an asychronous web service implementation. -
Hi everybody,
I find that working with Axis and it's tools (wsdl2java) is easier than working with Oracle's SOAP implementation(webservicesassembler.jar).
One advantadge of using oracle's solution is that ws that
returns an Element type does not need a custom deserializer and Axis needs.
Which more advantages do you think oracle's solution has?
Why should we use jDev10's JAX/RPC web services?
Thank you.Hello
The first thing is you should really say "JAX-RPC vs AXIS", since both of them are Web Services Runtime/Development APIs. And Jdeveloper is just a tools that simnplifies the development and developmen of Web Services using JAX-RPC.
So what about JAX-RPC vs Axis?
I would say that Axis is/was a de-facto standard fro developing WS, since it is running in most of the application servers - OracleAS 10g included-. Where JAX-RPC is the standard defines by the Java Community Process (JCP) and is a mandatory features of J2EE 1.4 specifications. So by using JAX-RPC you will be able to use a set of API that are really standard based. Also as part of your decision you should take a look in more details about the services provided by JAX-RPC: http://java.sun.com/xml/jaxrpc/index.jsp and the different standards involved.
Also I think that one important thing to take in consideration when you will make your decision is the future of Axis as we know it today release 1.0 If you see the Axis 2.0 Web site, it says that:
"Axis2 is an effort to re-design and totally re-implement both Axis/Java and (eventually) Axis/C++ on a new architecture."
Other considerations:
Some of the important things to watch when you select your framework are also related to:
- how you can interop with other framework (consuming or providing a service that is created with another stack)
- how to handle attachement (size, types, performances, ..)
When you will start to use Web Services in your system you may need to add different quality of services for example adding security (authentication, encryption, ...) or reliability (how I can be sure that my response has been received by my client application)
All the Web Service Management (security, reliability, etc etc) is not currently well integrated in the Axis stack, so you will have to use a third party solution to have this type of features. (you can for example use Oracle Web Services Manager for that purpose)
All these, and more, are more than just the 'SOAP' stack.
Oracle, JAX-RPC, and more:
First of all OC4J 10.1.3 support JAX-RPC as any J2EE 1.4, in addition we support WS-Security, WS-Reliability to integrate them to your enterprise, and a full integration with Oracle Web Services Manager.
Oracle JAX-RPC implementation has also specific focus to ensure interoperability firs WS-Interoperability compliant -[url=http://www.ws-i.org/]WS-I is an open organization that defines the interoperability around WS.- services, but also based on 'real life validation scenarios' -especially with .Net- where we use our customer applications to validate our platform interoperability.
Also, on the tooling side, our Web Services stack is fully integrated to Oracle JDevelope that allow you to develop easily JAX-RPC base Web Services (client or provider), based on several type of object/business logic (simple Java class, EJB, PL/SQL, SQL, ...); and deploy them very quickly to your application server
Regards
Tugdual Grall
Maybe you are looking for
-
Hi. I often use the conversation search option when archiving my emails from inbox. I find this a very useful method of finding trails where I and multiple people have responded to each other. However If I have already moved one or more of these emai
-
Sales Order is being processed
Hi All, 1) My scenario is sales bom, the header is delivered and the line items are billed, after completion of billing the sales order status for header is complete and the line items status is being process...due to this these sales orders are sho
-
SD Flow program using For all entries.
using simple ALV grid: I have the urgent requirement of changing the following program using 'For all entries' instead of joins and I should not use 'TABLES' -- For top-of-page I need to get dynamic fields like if I select company code in the selecti
-
The above statement explains my problem, but nothing on you website seems to help me.
-
Cannot display all the tables of the schema!!!
Hi: I use the oracle sql developer on the windows xp, I found that the tables tab cannot display all the tables of the schema owner, I use the sql "select count(*) from user_tables" I found the result is more than the tab can be display, and I also p