Message Style Web Services
Could u please suggest me some examples for Message Style web services other than the sample example provided with weblogic
Could u please suggest me some examples for Message Style web services other than the sample example provided with weblogic
Similar Messages
-
'Payload not Serializable' with custom WSDL data types in message-style web service
I'm implementing a message-style web service which publishes to a JMS Queue.
I had the web service built and deployed, but noticed that the "sendRequest" message's
part was of type "xsd:anyType." This is not specific enough for our interface,
since it is externally facing and needs to describe the object we're expecting
on the back end.
So I replaced xsd:anyType with mynamespace:MyType, which is defined as a complex
type in the same WSDL document.
My problem is that when I test the web service with the new WSDL (using the client.jar),
I get a server-side exception from the DestinationSendAdapter.doPost() method.
The exception reads:
javax.servlet.ServletException: Payload not Serializable
at weblogic.soap.server.servlet.DestinationSendAdapter.doPost(DestinationSendAdapter.java:129)
The domain object ('classic' JavaBean) that it should map to on the server side
extends a class that implements Serializable, so it should inherit the trait.
So my questions are:
1) Did I properly go about trying to restrict the object type that gets sent to
my Destination?
2) If no, what is the correct way? If yes, why am I receiving the Payload not
Serializable error if the domain object implements Serializable?
Thanks in advance.Resolved:
Apparently this is the right approach, as it boiled down to a classpath issue
on the client-side. Thanks anyway. -
Message driven bean and message style web service
Hi,
I'm trying to deploy a message style web service with a message driven EJB as
the receiver and am getting the following exception:
<Jan 22, 2002 10:51:06 AM PST> <Warning> <EJB> <MessageDrivenBean threw an Exception
in onMessage(). The exception was:
java.lang.ClassCastException: weblogic.jms.common.ObjectMessageImpl
java.lang.ClassCastException: weblogic.jms.common.ObjectMessageImpl
at credit.message.PostDefaultPayment.onMessage(PostDefaultPayment.java:24)
at weblogic.ejb20.internal.MDListener.execute(MDListener.java:254)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
public void onMessage(Message message) {
System.out.println("onMessage");
TextMessage textmessage = (TextMessage)message. // It is throwing
the exception on this line --looks pretty normal
Has anyone seen this before? Am I missing something?
Thanks,
TimHi Tim,
I think the problem is that you are assuming that the data type, of the message
argument to the onMessage(Message message) method in your MDB, is of type TextMessage.
I agree that this seems logical, especially since you passed "a string" to the
Message-style Web Service. However, this is not the case, because the WSDL uses
the "xsd:anyType" as the data type for any argument you pass to the send() method
;-) This maps to a java.lang.Object in the WebLogic Web Services implementation,
which is why you get the casting error. Try this instead:
public void onMessage(Message msg)
try
String msgText;
ObjectMessage objMessage = (ObjectMessage)msg;
msgText = (String)objMessage.getObject();
System.out.println("[PostDefaultPayment.onMessage(Message)] msgText=" + msgText);
System.out.println("[PostDefaultPayment.onMessage(Message)] msg.getJMSType()="
+ msg.getJMSType());
System.out.println("[PostDefaultPayment.onMessage(Message)] msg.getJMSCorrelationID()="
+ msg.getJMSCorrelationID());
System.out.println("[PostDefaultPayment.onMessage(Message)] msg.getJMSMessageID()="
+ msg.getJMSMessageID());
catch(Exception e)
e.printStackTrace();
Regards,
Mike Wooten
"Tim Uy" <[email protected]> wrote:
>
Hi,
I'm trying to deploy a message style web service with a message driven
EJB as
the receiver and am getting the following exception:
<Jan 22, 2002 10:51:06 AM PST> <Warning> <EJB> <MessageDrivenBean threw
an Exception
in onMessage(). The exception was:
java.lang.ClassCastException: weblogic.jms.common.ObjectMessageImpl
java.lang.ClassCastException: weblogic.jms.common.ObjectMessageImpl
at credit.message.PostDefaultPayment.onMessage(PostDefaultPayment.java:24)
at weblogic.ejb20.internal.MDListener.execute(MDListener.java:254)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
public void onMessage(Message message) {
System.out.println("onMessage");
TextMessage textmessage = (TextMessage)message. // It
is throwing
the exception on this line --looks pretty normal
Has anyone seen this before? Am I missing something?
Thanks,
Tim -
Using message-style web service by a Microsoft client
Does anyone have a sample Microsoft client using message-style web service? BEA
does not provide one. I found MS client does not receive messages published between
2 calls to method "receive", while the sample Java client ConsumerClient.java
does.
ConsumerClient.java is like:
while(true){
Object result = method.invoke(null);
sleep(20000); // not in sample, added for my test
System.out.println(result);
My VBScript code is like:
Set SC = CreateObject("MSSOAP.SoapClient")
SC.mssoapinit "http://localhost:7001/msg/Receiver/Receiver.wsdl", "", "", ""
While TRUE
Res = SC.receive
WScript.echo "Res = " & Res
Res = ""
' do something that takes 20 seconds
Wend
I added 20 seconds between calls so I can publish a message between 2 calls. I
found the Java client receives the message but the VBScript client doesn't. Has
anyone else observed this?Hi Kevin,
Thanks for your feedback.
Header support is planed for the next major release.
regards,
-manoj
Kevin Jiang wrote:
Hi Manoj,
Can you use SOAP header to pass session id accross instead of HTTP header? MS
SOAP toolkit 2.0 support access to SOAP header.
My app needs to use topic instead of queue. But as I said earlier, I can use MS
XML toolkit to access HTTP header. So I have a work around.
Thanks for all your responses with regard to this question!
Kevin
manoj cheenath <[email protected]> wrote:
Hum! i thought you were not able to receive message at all. now
i understood the problem. yes we are using http header to pass
session id accross, in the case of web service client who wants
to subscribe to JMS topics. I cant think of any other way to do
this. if you have any suggestions, i very much like to hear it.
for your application is it possible to use queues instead of topics?
we do not use http session information in the case of JMS queues.
-manoj
Kevin Jiang wrote:
Hi Manoj,
Your sample code is basically same as mine. It would also lose messagespublished
between calls to "receive" method.
I figured out what's going on. Undocumented by BEA, the web servicesends JMS
session ID in HTTP header along with first message. When client makessubsequent
calls to "receive", this ID must be sent back. I found this by usinga SOAP trace
tool.
Unfortunately, MS SOAP toolkit doesn't support access to HTTP header.So one has
to use MS XML toolkit to use message-style web service, when writingMS clients.
manoj cheenath <[email protected]> wrote:
an example of using message style web services with
ms soap toolkit is attached. let me know if this works
for you.
regards,
-manoj
Kevin Jiang wrote:
Hi Manoj,
I just changed anyType to string and the problem still happens.
Thanks,
Kevin
manoj cheenath <[email protected]> wrote:
I have not tryed message style web services with MS soap toolkit.
I think the problem is because the WSDL for the message style
web service use xsd:anyType as the return type and MS soap is
not able to understand it. can you pls modify the xsd:anyType to
xsd:string (or someother base type) in the WSDL.
SC.mssoapinit can load wsdl stored as a local file. so it should
be easy to make this change.
regards,
-manoj
Kevin Jiang wrote:
Does anyone have a sample Microsoft client using message-style
web
service? BEA
does not provide one. I found MS client does not receive messages
published
between
2 calls to method "receive", while the sample Java client ConsumerClient.java
does.
ConsumerClient.java is like:
while(true){
Object result = method.invoke(null);
sleep(20000); // not in sample, added for my test
System.out.println(result);
My VBScript code is like:
Set SC = CreateObject("MSSOAP.SoapClient")
SC.mssoapinit "http://localhost:7001/msg/Receiver/Receiver.wsdl",
While TRUE
Res = SC.receive
WScript.echo "Res = " & Res
Res = ""
' do something that takes 20 seconds
Wend
I added 20 seconds between calls so I can publish a message between2 calls. I
found the Java client receives the message but the VBScript clientdoesn't. Has
anyone else observed this? -
Message Style Web Serivce Example
Hi,
Am trying the run the message style web service example that comes along
with weblogic server.
As per the documentation, I created a JMS connection factory and JMS topic,
with the JNDI names
as given in the documentation.
I built the example using ant, and that worked successfully. It created an
ear file, which I deployed successfully
in the weblogic server.
Now when I am testing the example, I run the Consumer client first and then
run the Producer client.
Now the problem is that the message is delivered sometimes and sometimes its
not delivered.
Also when I run more that one instance of Consumer client, the behaviour is
unpredicatable, the message is sometimes
delivered to all consumers, sometimes, to one consumer and sometimes to
none.
I checked the 'Montior JMS Destination' on the weblogic console, and it
shows the correct no of messages,
but it also shows some Bytes Pending.
Am not sure, what could be the reason for this. Can someone please help me
on this.
Thanks
AmitI have an open ticket with BEA regarding this issue. The problem is in that this
type of WS in WebLogic implementation works incorrect with JMS. In particular,
the Servlet generated on the server does not disconnect itself from the JMS. New
client causes a new JMS connection. If you deal with JMS Queue and accidentally
produce more than one "listeners", the JMS decides which listener would be granted
the message. That's why you get messages randomly.
The second problem that I've found is that message-style WS capable to receive
messages that sent only by message-style WS. In my tests, the messages were sent
by regular sender ( see WLS Examples for topic and queue ) while the message-style
WS was the listener, i.e. implemented "receive" method. This WS did not get any
messages sent by regular sender but always got messages sent by another WS ( to
the queue or to the topic, did not matter ).
I've decided to write my own message-style WS instead of BEA's implementation
finally.
-Michael
"Amit" <[email protected]> wrote:
Hi,
Am trying the run the message style web service example that comes along
with weblogic server.
As per the documentation, I created a JMS connection factory and JMS
topic,
with the JNDI names
as given in the documentation.
I built the example using ant, and that worked successfully. It created
an
ear file, which I deployed successfully
in the weblogic server.
Now when I am testing the example, I run the Consumer client first and
then
run the Producer client.
Now the problem is that the message is delivered sometimes and sometimes
its
not delivered.
Also when I run more that one instance of Consumer client, the behaviour
is
unpredicatable, the message is sometimes
delivered to all consumers, sometimes, to one consumer and sometimes
to
none.
I checked the 'Montior JMS Destination' on the weblogic console, and
it
shows the correct no of messages,
but it also shows some Bytes Pending.
Am not sure, what could be the reason for this. Can someone please help
me
on this.
Thanks
Amit -
AxisFault seen while invoking document style web service
I am seeing the following stacktrace when I try to invoke a document-style web service.
<partnerRole name="MyWebService1_Role">
<ServiceName>{http://idm.oracle.com/}MyWebService1</ServiceName>
<PortType>{http://idm.oracle.com/}MyWebService1</PortType>
<Address>null</Address>
</partnerRole>
<conversationId>bpel://localhost/default/ProvisioningFromDAS~1.0/4202-BpInv0-BpSeq0.3-3</conversationId>
<properties>{}</properties>
</partnerLink>
<2005-09-06 09:23:37,650> <DEBUG> <default.collaxa.cube.ws> <WSIFInvocationHandler::invoke> Fault happened
AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Client
faultSubcode:
faultString: caught exception while handling request: expected element is missing: {http://idm.oracle.com/}attribute
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}stackTrace:caught exception while handling request: expected element is missing: {http://idm.oracle.com/}attribute
at org.collaxa.thirdparty.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:221)
at org.collaxa.thirdparty.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:128)
at org.collaxa.thirdparty.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1083)
at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source)
at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
What could this mean ?Hi,
I am getting a similar issue. I created a Document-style/literal webservice and deployed on Weblogic 9.2 . Then I generated client stubs using clientgen. I get the following exception stack trace:
java.rmi.RemoteException: web service invoke failed: javax.xml.soap.SOAPException:
failed to serialize class java.lang.Objectweblogic.xml.schema.binding.SerializationException: type mapping lookup failure on
class=class com.sun.org.apache.xerces.internal.dom.DeferredDocumentImpl TypeMapping=TYPEMAPPING SIZE=3
ENTRY 1:
class: java.lang.Object
xsd_type: ['http://xmlns.ozarkexpress.com/business/sell']:stns:echoDocumentResponse
ser: weblogic.xml.schema.binding.internal.builtin.XSDAnyCodec@1125127
deser: weblogic.xml.schema.binding.internal.builtin.XSDAnyCodec@18dfef8
ENTRY 2:
class: java.lang.Object
xsd_type: ['http://xmlns.ozarkexpress.com/business/sell']:stns:echoDocument
ser: weblogic.xml.schema.binding.internal.builtin.XSDAnyCodec@15e83f9
deser: weblogic.xml.schema.binding.internal.builtin.XSDAnyCodec@2a5330
ENTRY 3:
class: java.lang.Object
xsd_type: ['http://www.w3.org/2001/XMLSchema']:xsd:anyType
ser: weblogic.xml.schema.binding.internal.builtin.XSDAnyCodec@bb7465
deser: weblogic.xml.schema.binding.internal.builtin.XSDAnyCodec@d6c16c -
Hi,
Has anyone tried (and maybe succeeded) in accessing an
RPC-style Web Service deployed on WebLogic Server 6.1 using
SSL? I have a Web Service deployed and am able to access it using JNDI and the
weblogic.soap.http.SoapInitialContextFactory
INITIAL_CONTEXT_FACTORY. However, when I try to set the
Context.SECURITY_PROTOCOL to "ssl" and access the secure port,
I get a "java.net.SocketException: Unexpected end of file from
the server" error message.
Does the weblogic.soap.http.SoapInitialContextFactory not
support SSL? Do I need to do the SOAP/XML messaging myself,
without being able to make use of the WebLogic convenience
classes? Thanks! RobAlright!
Glad you got it working ;-)
Actually, the problem with the protocol being hardcoded to http in the wsdl.jsp,
is a bit strange. It's unusual that the BEA engineers that coded the wsgen component
and support classes, didn't use something like the following:
<soap:address location="<%= request.getScheme() + "://" + request.getServerName()
+ ":" + request.getServerPort() %>/security/examples/webservices/security/PhoneBookService"/>
I don't use wsgen too much, because I need to have more control over the J2EE
packaging. It (wsgen) is great for spitting out stuff, but not really setup for
doing Web service packaging that use classes (i.e. helper files, frameworks, etc.)
that it doesn't generate. I think they (BEA) might be looking into integrating
the Web Services assembly process with other tools like WebGain, Forte, etc. to
alleviate these types of issues.
Anyway, glad you got it working, so now you can help somebody else (time permitting,
of course) with this topic in the future!
Regards,
Mike Wooten
"Rob Nelson" <[email protected]> wrote:
>
Mike,
Thank you very much for your response! The next to
last sentence did it for me (when you mentioned checking
that the location attribute of the soap:address element
was set properly)! I noticed that when I viewed the WSDL
file via the browser (by clicking on the link in the
index.html page), I saw http://host:<unsecure_port> when
I requested it over the unsecure port, but I saw
http://host:<secure_port> when I requested the WSDL over
the secure port. Notice it did not say https!
So, I unjarred the EAR file that was generated by my
wsgen task, and then unjarred the generated WAR file
contained therein. When I looked at wsdl.jsp, I noticed
that "http" was hard-coded in the location attribute, but
that the host name and port number were dynamically
generated. So I added a scriplet to dynamically place an
"s" after "http" (if request.isSecure()) and rejarred up
the WAR and EAR files.
Now when I deployed the EAR file, I see "https" when
I request the WSDL over the secure port, and my client
(actually your client;) works! Awesome! I really appreciate
your help! Now my only issue is why did the wsdl.jsp have
"http" hard-coded, not accounting for secure requests.
These files were generated by the WSGEN task in ANT.
I figure it's either: I have a configuration problem,
I have a problem with my ANT build script, my version of
WebLogic Server (6.1 w/SP1 built 9/18/2001) has a bug, or
maybe you just have to manually go in and modify the wsdl.jsp
file if you want to use https :(. Please let me know if
you have any insight on this, and I will also follow up
with WebLogic support. Thanks again! Rob
"Michael Wooten" <[email protected]> wrote:
Hi Rob,
I am absolutely sure the code I posted works, so we need to approach
this from
a different angle ;-)
First, I know why the Context.SECURITY_PROTOCOL approach doesn't works.
It's because
the namespace in the Web Services code examples is not the same oneas
the one
used for RMI objects, EJBs, JDBC Data Sources, etc. For those objects,
the Context.PROVIDER_URL
is something like "t3://localhost:7001", and the INITIAL_CONTEXT_FACTORY
is "weblogic.jndi.WLInitialContextFactory".
The one being used with WebLogic Web Services, is mainly just functioning
as a
mechanism for manufacturing WebServiceProxy objects, because it is a
non-instanciable!
It does this by using a subclass of javax.naming.Context called SOAPContext,
which
is completely hidden from you, but also doesn't do much except implement
the lookup()
method. The implementation of this method ignores the Context.SECURITY_URL
property,
but it does pay attention to the "java.naming.security.principal" and
"java.naming.security.credentials"
properties. You don't need these properties for SSL, just Basic Authentication.
Enough about that, though. The service end-point is a servlet right?
So this means
it has a URL that begins with http or https, which in turn means the
WebLogic
servlet engine gets the SOAP request and sends it to the StatelessSessionAdapter
servlet. To WLS, this is just like any other HTTP/HTTPS request sent
to it ;-)
There is no special "SOAP-related" HTTP/HTTPS handler in WLS, but the
SSL challenge
dance still happens. So my first question is, are you sure you havethe
HTTPS
attributes set properly in the WebLogic console. SSL/HTTPS should be
enabled and
the "Hostname Verification Ignored" checkbox should be checked. Next,
are you
sure the URL assigned to the location attribute of the <service> element
in the
WSDL is correct (i.e. https://localhost:7002)? Are you using the "dynamic
client"
approach?
Regards,
Mike Wooten
"Rob Nelson" <[email protected]> wrote:
Mike,
Thanks for your response. I downloaded the code example that
you
posted
last week, as well as the code example that you posted in October for
a similar
request (BEA Support pointed me towards that). Unfortunately, I still
can't get
the Web Service to respond to the client request when the client uses
the HTTPS
port for the WebLogic Server.
I tried two different client approaches. The first uses the client
code
that you posted in October, the WebServiceProxy approach. The second
approach
is based on the example in the WebLogic documentation, which uses the
weblogic.soap.SoapInitialContextFactory
class with the javax.naming.Context object to perform a lookup on the
service
(which closely resembles rmi without the narrowing).
Both client classes fail to invoke the the service itself viaHTTPS
(although
they both work when making HTTP requests to the unsecure port). However,
when
I run the client based on the client class that you posted in October
and make
an HTTPS request, I can see in the output where it is able to download
the WSDL
file and use it (via the WebServiceProxy) to describe the availablemethods
for
the associated Web Service. It is only when the actual invoke() method
is called
on the SoapMethod object (which in turn sends the XML request to the
Web Service
Servlet), that the server doesn't respond, and the client fails with
an UnexpectedEndOfFileException
(i.e. no response).
So, do you know why the servlet that the RPC-style Web Serviceuses
to handle
requests would not respond to HTTPS requests, when it processes HTTP
requests
without a problem (using the same client code that fails with the HTTPS
request)?
I am using WebLogic Server 6.1 w/SP1 on a Solaris 8 platform. Thanks
for any
advice you can give me! Rob
"Michael Wooten" <[email protected]> wrote:
Hi Rob,
Check out the attached zip for "insights" into how to do this. It
contains
the
code for two Web service "consumers" (that the new fangled word fora
"client")
and the web.xml and weblogic.xml for the RPC-style Web Service, that
they consume.
Hope this helps,
Mike Wooten
"Rob Nelson" <[email protected]> wrote:
Hi,
Has anyone tried (and maybe succeeded) in accessing an
RPC-style Web Service deployed on WebLogic Server 6.1 using
SSL? I have a Web Service deployed and am able to access it using
JNDI
and the
weblogic.soap.http.SoapInitialContextFactory
INITIAL_CONTEXT_FACTORY. However, when I try to set the
Context.SECURITY_PROTOCOL to "ssl" and access the secure port,
I get a "java.net.SocketException: Unexpected end of file from
the server" error message.
Does the weblogic.soap.http.SoapInitialContextFactory not
support SSL? Do I need to do the SOAP/XML messaging myself,
without being able to make use of the WebLogic convenience
classes? Thanks! Rob -
Trouble Communicating with Document-Style Web Service
I have a flash app that currently communicates with a
RPC-style web service. I changed the web service to be
document-style, and the flash app no longer sends valid requests. I
was under the impression that one could simple swtich styles, and
flash would play along. Apparently, this is not the case. Does
anyone have an insight in this area?Clarified with Partick Calahan, who is maintaining this tool.
Currently, doc style is not handled by this tool. I guess it will be
supported in the future.
Thanks.
"Karthik V" <[email protected]> wrote in message
news:[email protected]..
I'm using WebLogic Webservice Explorer v.02 (WEX).
I'm able to test rpc style web services without any problem.
But whenever I try to open a document style web service WSDL, I get the
following exception.
I would appreciate if you have any suggestions for the to over come this
issue.
java.lang.IllegalArgumentException at
weblogic.webservice.tools.wex.MessagePanel.<init>(MessagePanel.java:33)at
>
weblogic.webservice.tools.wex.ServicePanel.operationChanged(ServicePanel.jav
a:153) at
weblogic.webservice.tools.wex.ServicePanel.portChanged(ServicePanel.java:133
) at
weblogic.webservice.tools.wex.ServicePanel.serviceChanged(ServicePanel.java:
121) at
weblogic.webservice.tools.wex.ServicePanel.<init>(ServicePanel.java:69)at
>
weblogic.webservice.tools.wex.tasks.FetchWsdlTask.perform(FetchWsdlTask.java
:45) at
weblogic.webservice.tools.wex.tasks.TaskQueue.run(TaskQueue.java:47) at
java.lang.Thread.run(Unknown Source) -
Retrieving client ip from RPC-style web service
Hi,
I've got an rpc-style web service and I would like to log the incoming client
ip address (i.e. I need to get at the HTTPRequest object). Can this be done by
passing some kind of SOAP context parameter in the argument list of my exposed
methods? If this is not doable, is implementing SOAP message handlers the way
to to go? I would rather not do the latter, as the web service is working well
and don't want to play with my code too much.
ThanksI tried this, following the example in http://e-docs.bea.com/wls/docs70/webapp/filters.html,
but I still can't get it to work. The init() method gets called, but doFilter(ServletRequest
req, ServletResponse resp, FilterChain fc) does not. The "filter" part of my
web.xml looks like:
<filter>
<filter-name>serviceFilter</filter-name>
<filter-class>webservices.ServiceFilterImpl</filter-class>
</filter>
<filter-mapping>
<filter-name>serviceFilter</filter-name>
<url-pattern>/myPattern/myWebService</url-pattern>
</filter-mapping>
The only thing I could thing of is that maybe my url-pattern is wrong, although
this seems unlikely as my web service is able to process requests sent using
http://myWLSMachine:7001/myPattern/myWebService.
In fact, in the the WLS access.log file, I have:
[07/Oct/2002:11:51:01 -0400] "POST /myPattern/myWebService HTTP/1.0" 200 3011.
Do you know if there's something in the JAX-RPC API that I could use to get at
the client ip address? I dug through the documentation and came across something
called "ServletEndpointContext", but I'm not sure if this will do the trick.
Thanks for your time,
Danielle
"manoj cheenath" <[email protected]> wrote:
One way to do this may be to write a servlet filter
and map the filter to the URL of your service.
regards,
-manoj
"Danielle Vella" <[email protected]> wrote in message
news:[email protected]..
Hi,
I've got an rpc-style web service and I would like to log the incomingclient
ip address (i.e. I need to get at the HTTPRequest object). Can thisbe
done by
passing some kind of SOAP context parameter in the argument list ofmy
exposed
methods? If this is not doable, is implementing SOAP message handlersthe
way
to to go? I would rather not do the latter, as the web service isworking
well
and don't want to play with my code too much.
Thanks -
Returning data with a doc style web service
How does one return information using a "Document" style Web Service? WLS 8.1 restricts
you to a single "in" parameter. Do I return information by using the "return"
value from the Web Service (assuming it's synchronous)? If so, what are the restrictions
on the return value. I've read the WLS 8.1 Programming Web Services document but
it's pretty lite in the area of Document style Web Services.
Thanks.WLS 8.1 supports two document styles:
#1 document literal
#2 document wrapped literal
In the case of #1 a web service method can only
take zero or one argument. There can be a return
type (or void). The (single) argument or return type
could be any supported type, or user defined complex
types (java beans). In #1 the dispatch is done based
on the incoming document and not based on the name
of the method. You can find an example for this at:
http://manojc.com/?sample13
In the case of #2 a web service method can have
any number of arguments. The WS container will
wrap the method in to a complexType. Here,
method name will be the name of the complexType
and arguments will be added as elements of the
complexType. In this case dispatch is done
based on the method name. An example here:
http://manojc.com/?sample14
Regards,
-manoj
"Jack Ottofaro" <[email protected]> wrote in message
news:3ea55b39$[email protected]..
>
How does one return information using a "Document" style Web Service? WLS8.1 restricts
you to a single "in" parameter. Do I return information by using the"return"
value from the Web Service (assuming it's synchronous)? If so, what arethe restrictions
on the return value. I've read the WLS 8.1 Programming Web Servicesdocument but
it's pretty lite in the area of Document style Web Services.
Thanks. -
Document Style Web Services in JDeveloper
Hi,
I have been creating Web Services in JDev using a simple java class which has the following signature:
public boolean checkUserCredentials(String username, String password, int role)
I would like to start working on more complex examples, specifically document style web services. It is my understanding that the non-wrapped document style services will return an XML type with a mapping class defined during the creation process.
Can anyone point me to a good example of creating such a service in JDeveloper? It is my understanding that such a class would have a return type of XMLDocument, is that correct? If not do I define a custom object as a return type?
I have searched on this topic, but couldn't find any good examples / documentation. Apologies if im missing something.
ThanksDev update: WSDL file seems fine. The problem is that it's for a document-bare service and, by default, the Unwrap Wrapped Parameters option on step 2 of the top-down wizard is enabled and checked. This means that we try to pick apart the input message into a series of parameters, yielding the error shown because a document-bare operation must have only one input parameter.
If the Unwrap Wrapped Parameters option is unchecked, creation of the top-down service will succeed. In future, we ought to disable the option completely for everything but document-wrapped services, as that's the only time it applies.
This is covered by bug 4630382. -
Runtime error with doc/lit style web services
I've written a web service client (wrapped doc/lit style) and when I try to invoke the service, I get the following runtime error. I see some have reported the same error before and I don't see a resolution for the issue. Any help to resolve the issue is appreciated.
My environment:
Standalone web service client
JARs used from JDEV 10.1.2
Java 1.4.2
I verified there are no duplicate implementations of the DOM Parser; I just use xmlparserv2.jar
Exception in thread "main" java.lang.AbstractMethodError: oracle.xml.parser.v2.X
MLElement.getNamespaceURI()Ljava/lang/String;
at org.apache.soap.util.xml.DOM2Writer.print(DOM2Writer.java:139)
at org.apache.soap.util.xml.DOM2Writer.serializeAsXML(DOM2Writer.java:98
at org.apache.soap.Utils.marshallNode(Utils.java:109)
at org.apache.soap.Body.marshall(Body.java:165)
at org.apache.soap.Envelope.marshall(Envelope.java:203)
at org.apache.soap.Envelope.marshall(Envelope.java:161)
at oracle.soap.transport.http.OracleSOAPHTTPConnection.send(OracleSOAPHT
TPConnection.java:664)
at org.apache.soap.messaging.Message.send(Message.java:125)
at emgateway.main.EMWSStub.sendRequest(EMWSStub.java:106)Hi John,
Yes this is certainly possible. The role of client, server and service
gets blurred when dealing with multiple web services. For an example,
you can take a look at the work done by WS-I for the sample application
[1], where multiple types of web services communicate with each other.
Regards,
Bruce
[1]
http://www.ws-i.org/SampleApplications/SupplyChainManagement/2003-12/SCMArchitecture1.01.pdf
John Meiser wrote:
>
Can a doc-style Web Service invoke an RPC-Style Web Service? I know that we cannot
mix RPC with Doc-style in the same Service, but I was wondering if RPC and Doc-style
can call each other.
Thanks,
John -
We are using CF 7.01 and have been successful in consuming
web services in the past. We are unsuccessful however in consuming
a web service where the client says is using a message-based (aka
document style) web service. We are entering thier system but we
error out in our attempt to access thier web service.
In the cfcomponent I have even tried using style="document"
but we are still erroring out. The nature of the error message at
our end shows:
-- start of error message...
Message: Could not generate stub objects for web service
invocation.
Detail: Name:
https://integrationdev.peopleclick.com/soap/echo. WSDL:
https://integrationdev.peopleclick.com/soap/echo. WSDLException (at
/SOAP-ENV:Envelope): faultCode=INVALID_WSDL: Expected element '{
http://schemas.xmlsoap.org/wsdl/}definitions'.:
It is recommended that you use a web browser to retrieve and
examine the requested WSDL document for correctness. If the
requested WSDL document can't be retrieved or it is dynamically
generated, it is likely that the target web service has programming
errors.
-- ...end of error message.
The message insinuates a WSDL problem. I understand
message-based web services don't use a WSDL. Must I remove
something from our standard RPC-based web service configuration?
Thanks in advance.
Devhi all,
UPDATE:
i have some how managed to handle my error at both REQUEST MESSAGE peoplecode and at HANDLER peoplecode. Tested the webservice using SOAPUI tool. After passing all inputs required, the customer is not created and i am getting a blank response message which should contain the SETID and CUST_ID as response. Please help me out whether i am missing any Key part in creating a CUSTOMER. Note, i haven't written any Peoplecode for creation and i am also not aware how to do the same or where to write the logic for it.
Kindly bare with me and do help me out as i m struck with it for long. Thanks in advance -
Document Style web service in process - Please Help
All,
I have created a simple Document-oriented web service and deployed to a standalone OC4J container using the following code:
********************* Interface ***********************
import org.w3c.dom.*;
interface PrimeNumberService
//method to check the primality of the number passed in Element variable
public Element isPrime(Element e) ;
******************** Implementation *******************
@version 1.0
Development Environment : Oracle9i JDeveloper
Name of the File : PrimeNumberServiceImpl.java
Creation/Modification History :
13-Apr-2002 Created
Overview:
This class file defines methods to implement PrimeNumberWebService.
The method isPrime() is exposed by the Web Service.
import org.w3c.dom.*;
import oracle.xml.parser.v2.*;
import java.io.*;
public class PrimeNumberServiceImpl implements PrimeNumberService
public PrimeNumberServiceImpl()
* This method is exposed by the Web Service to check if the number is
* prime. It extracts the number for input element and checks if it is
* prime or not and return the output in the XML Element.
* The input element is of the form <number>23</number>
public Element isPrime(Element e)
// define an XML Element that will be returned to the client
Element processedEl=null;
try{
// get the first clild of input element
Node enode = e.getFirstChild();
//get the value of input element and parse it
String value= enode.getNodeValue();
double number = Double.parseDouble(value);
String answer=null;
// check if the input number is prime
answer = checkPrime(number);
// create element from the answer
processedEl =createElement(answer);
}catch(Exception ex){
ex.printStackTrace();
return null;
// return output to client
return processedEl;
* This method creates an XML element from the input string values and return it
* The Element is of the form <answer>value</answer>
private Element createElement(String value){
// create a Document object
Document xmldoc = new XMLDocument();
// create an element with name "answer"
Element e1 = xmldoc.createElement("answer");
// append the element to document object
xmldoc.appendChild(e1);
// create a Text object from input values and append it to above element
Text t = xmldoc.createTextNode(value);
e1.appendChild(t);
return (Element)xmldoc.getFirstChild();
* This method check if the input number is prime or not
private String checkPrime(double num){
//For a prime number mod(power(2,number),number) is equal to 2
if ( Math.IEEEremainder( Math.pow(2.0,num) ,num)==2){
System.out.println ("the number is: " + num);
return "The number " + num + " is prime";}
else{
System.out.println ("the number is: " + num);
return "The number " + num + " is not prime";}
************************ Generated WSDL ***************
<?xml version="1.0" encoding="UTF-8"?>
<definitions name="PrimeNumberService"
targetNamespace="http://tempuri.org/PrimeNumberService.wsdl"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:tns="http://tempuri.org/PrimeNumberService.wsdl"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" >
<documentation>
WSDL for Service: PrimeNumberService, generated by Oracle WSDL toolkit (version: 1.1)
</documentation>
<types>
<schema targetNamespace="http://tempuri.org/PrimeNumberService.xsd" xmlns:tns="http://tempuri.org/PrimeNumberService.xsd" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xsd="http://www.w3.org/2001/XMLSchema"/>
</types>
<message name="isPrimeOutput">
<part name="return" element="xsd:any"/>
</message>
<message name="isPrimeInput">
<part name="param0" element="xsd:any"/>
</message>
<portType name="PrimeNumberServicePortType">
<operation name="isPrime">
<input message="tns:isPrimeInput"/>
<output message="tns:isPrimeOutput"/>
</operation>
</portType>
<binding name="PrimeNumberServiceBinding" type="tns:PrimeNumberServicePortType">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc"/>
<operation name="isPrime">
<soap:operation soapAction="urn:PrimeNumberService/isPrime"/>
<input>
<soap:body use="literal" namespace="urn:PrimeNumberService"/>
</input>
<output>
<soap:body use="literal" namespace="urn:PrimeNumberService"/>
</output>
</operation>
</binding>
<service name="PrimeNumberService">
<port name="PrimeNumberServicePort" binding="tns:PrimeNumberServiceBinding">
<soap:address location="http://hp-xeon-01:9799/primenumberws/primenumberService"/>
</port>
</service>
</definitions>
I get the following error when trying to deploy:
Error:
[Error ORABPEL-10902]: compilation failed
[Description]: XML parsing failed because "undefined part element.
In WSDL at "http://hp-xeon-01:9799/primenumberws/primenumberService?WSDL", message part element "{http://www.w3.org/2001/XMLSchema}any" is not defined in any of the schemas.
Please make sure the spelling of the element QName is correct and the WSDL import is complete.
[Potential fix]: n/a.
Please let me know what I'm doing wrong.
Regards,
JeffI think this thread is duplicate of "Document style web service receive and send org.w3c.Element" message thread.
- Rakesh -
Calling a document style web service using a pl/sql wrapper method
Just wanted to find out if anybody has a working example of invoking a document style web service from Oracle 10g database on a Unix environment.
We have java test class that invokes the web service, and we are trying to use a pl/sql wrapper to invoke a Java Web Service client. So far, we are encountering an End of File Communication error from Oracle which essentially terminates the session with the database.
On the Oracle application server side we are able to see a successful HTTP request made to the application server via server log, which is hosting the web service, since we are registering HTTP 200 success codes. However, we do not see any other errors from the application in the server logs. Most likely since the client side fails, before actually getting a chance to invoke the web service. This has been verified by commenting the client code leaving the print statements. The first call to the Service Factory method (XFire) to look up the service is where the PL/SQL procedure fails with an End of File communication error.Remove the when others section and see the actual error and post that.
http://tkyte.blogspot.com/2008/06/when-others-then-null-redux.html
http://tkyte.blogspot.com/2007/03/dreaded-others-then-null-strikes-again.html
Maybe you are looking for
-
My Ipad keyboard is not working in email now that I have downloaded the OS6. Anyone know how to fix it?
-
Exception in java mail API when parsing email
I am receiving the following exception when receiving some emails that contain attachments with java mail (irrelevant part of stack trace omitted): javax.mail.internet.ParseException: Expected ';', got "," at javax.mail.internet.ParameterList.<i
-
Error in JMS Adapter while communicating with WebSphere MQ 7.5
Guys, I am trying to integrate JMS Adapter with WebSphere MQ. JMS Adapter : 14.0.2.0 WebSphere MQ : 7.5 I am getting error like below. Please help me out. Thanks 17/04/14 16:25:49 java.lang.NoSuchMethodError: com.ibm.msg.client.jms.JmsSession.createQ
-
I have read these sites plus a few others, and nothing works: http://support.mozilla.com/en-US/questions/688704?s=yahoo+changed+search+settings&as=s http://support.mozilla.com/en-US/questions/683682?s=yahoo+changed+search+settings&as=s http://support
-
Saving tags back to file.
I'm using v1.0 Trial here. Is there any way to save tags edited in Lightroom back to the actual file? because it seems that the tags only get stored in the DB only, which is quite inconvenient. Thanks.