Jax-ws endpoint change???
Hi,
What is the best way to overcome a situation, if a web service endpoint changes?
thanks in advance
In your web service client you should be using the Web service End point as an URL. Read the endpoint from a properties file as string and create the URL at runtime,so that you can modify the string in properties file later without recompiling the code.
Similar Messages
-
Deploying related JAX-RPC endpoints
Hi,
I've got some JAX-RPC endpoints that are basically two interfaces to a whole heap of behind the scenes classes that they both share. It seems it's not possible to deploy two endpoints in the same WAR. What would be the recommended way to deploy these so that I only need deploy these classes once, and there will only be one instance of them in the servlet that both interface implementations reference?
On a similar note, is there a similar practice that could be applied to JSP's, as I have 3 jsp "web sites" that need to be fairly distinct in their deployment, but they share some common jsp's as static includes and some classes. What's the best way to deploy the shared includes and java classes so that they are deployed to the tomcat server once and used by all 3 jsp sites?
I'm using jwsdp 1.0.01
Thanks for any helpI saw this discussion and had come to the same conclusion. However there is more to it.
If you deploy a service as HTTP secure, then how do you tell the client to get the WSDL? Because the wscompile for the client does not support authentication.
I tried to put the WSDL on a separate (non-secure) end-point, but it does not seem to work. Even when I define the two endpoints separately in the jaxrpc-ri.xml e.g.
<webServices
xmlns="http://java.sun.com/xml/ns/jax-rpc/ri/dd"
version="1.0"
targetNamespaceBase="urn:IMEIWS"
typeNamespaceBase="urn:IMEIWS"
urlPatternBase="/ws">
<endpoint
name="IMEIWebService"
displayName="IMEI Web Service from Wilabs"
description="A web service."
interface="com.wilabs.imeiws.server.IMEIWebServiceInterface"
implementation="com.wilabs.imeiws.server.IMEIWebServiceImpl"
port="{urn:IMEIWS}IMEIWebServiceInterfacePort"
model="/WEB-INF/model.gz"/>
<endpoint
name="IMEIWebServiceWSDL"
displayName="IMEI Web Service WSDL"
description="A web service to obtain the WSDL."
interface="com.wilabs.imeiws.wsdl.IMEIWebServiceInterface"
implementation="com.wilabs.imeiws.wsdl.IMEIWebServiceImpl"
port="{urn:IMEIWS}IMEIWebServiceWSDLPort"
model="/WEB-INF/model.gz"/>
<endpointMapping
endpointName="IMEIWebService"
urlPattern="/imeiws"/>
<endpointMapping
endpointName="IMEIWebServiceWSDL"
urlPattern="/wsdl"/>
</webServices>
I get only one in the jaxrpc-ri-runtime.xml i.e.:
name='IMEIWebService'
interface='com.wilabs.imeiws.server.IMEIWebServiceInterface'
implementation='com.wilabs.imeiws.server.IMEIWebServiceImpl'
tie='com.wilabs.imeiws.server.IMEIWebServiceInterface_Tie'
model='/WEB-INF/model.gz'
wsdl='/WEB-INF/IMEIWebService.wsdl'
service='{urn:IMEIWS}IMEIWebService'
port='{urn:IMEIWS}IMEIWebServiceInterfacePort'
urlpattern='/imeiws'/> -
JAX-WS Endpoint to be remotely accessible
Once we publish the webservice via the Ednpoint - javax.xml.ws.Endpoint.publish(url, obj), the Webservice is accessible @ url?wsdl from the localhost and not from any remote machine. The solns pointed at http://tech-eureka.blogspot.com/2009/10/publishing-jax-ws-endpoint-not-just-to.html does not work. Any inputs/comments/suggestions appreciated
ThanksWell, first of all you should try pinging the host the service is hosted from using the host name, if that doesn't work, then try the IP, if that doesn't work, then contact your network administrator, if that doesn't work, then go to the pub.
My guess is either 1) that the API calls you make to set up the service still only make this service available from localhost or, 2) you are using the hostname on the client but the DNS isn't setup correctly, so you should use the IP address. -
Trying to deploy a Metro JAX-WS Endpoint with UsernameToken wsit in Weblogic 12c
Hi,
we just try to deploy a Metro based Jax-WS Endpoint to Weblogic 12c.
The Webservice itself is successfully deployed on Tomcat with Metro 2.3 and Weld.
For security the wsit file is used in combination with the UsernameToken policy.
For Validation an implementation of PasswordValidator (com.sun.xml.wss.impl.callback.PasswordValidationCallback.PasswordValidator) is used,
Unfortunately this class is not present in the weblogic jax-ws implementation, despite the fact that the implementation is based upon metro.
Is there a possibility to use the standard metro implementation for jax-ws in Weblogic 12c (12.1.2.0).
We found anĀ user guide here: https://metro.java.net/guide/ch02.html#weblogic-10 but it doesn't work for us.
Maybe there is an problem with 12.1.2.0, because the user guide is for 12.1.1.0.
Has anyone tried something similar?
Thanksbecause using sun-jaxws.xml is a non-standard deployment descriptor. You need to use just the web.xml and instead of pointing at the JAX-WS RI servlet, point it at your endpoint implementation class. The AS 9 tutorial should show an example of this.
-
Jax-WS Client - Change Endpoint Address "https" to "http" - Cause HTTP 302
Hi,
I don't know it is a bug or not, but i couldn't find any answer for this.
I try to write a client for an SSL Secured and Basic Authenticated web service. To access the WSDL url, i have a VPN connection to that network. Also i registered their certificate to the JVM that i used to run the Client.
To create Jax-WS Client codes, i used "......\jaxws-ri\bin\wsimport.bat -s src -d bin -p model https://xxxx.com/xxxxxx.asmx?WSDL" as explained.
After successfully generated sources, i added my "SecurityEnvironmentHandler.java" to catch Username and Password callbacks, and also added "SecurityHandler.java" to register my handler and surrund with necessary SOAP Header Security tags. I register them as explained too.
Everything looks fine, but when i try to run Client test which basically call one of the services, i get
com.sun.xml.ws.client.ClientTransportException: The server sent HTTP status code 302: Found
at com.sun.xml.ws.transport.http.client.HttpTransportPipe.checkStatusCode(HttpTransportPipe.java:203)
at com.sun.xml.ws.transport.http.client.HttpTransportPipe.process(HttpTransportPipe.java:177)
at com.sun.xml.ws.transport.http.client.HttpTransportPipe.processRequest(HttpTransportPipe.java:93)
at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:598)
at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:557)
at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:542)
at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:439)
at com.sun.xml.ws.client.Stub.process(Stub.java:222)
at com.sun.xml.ws.client.sei.SEIStub.doProcess(SEIStub.java:135)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:109)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:89)
at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:118)
at $Proxy36.xxxxxxxxxxx(Unknown Source)
at xxxxxxxxServisImpl.xxxxxxxxxxxxx(xxxxServisImpl.java:69)
at xxxxxxxxxServisTest.testxxxxxxx(xxxxxxServisTest.java:57)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at junit.framework.TestCase.runTest(TestCase.java:154)
at junit.framework.TestCase.runBare(TestCase.java:127)
at org.springframework.test.ConditionalTestCase.runBare(ConditionalTestCase.java:69)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)( i have changed some unnecessary parts with "xxxxxx" )
The basic of it i get an "*HTTP 302*" which means it tries to redirect the request.
Also i had an working copy of a sample Client which was written with Jax-RPC. I looked the generated SOAP Messages for both of clients, they was almostly the same.
After lots of tries, i found the problem, somehow after the client application starts, it changes the Endpoint Address "https://xxxxxxxx.com/xxxx.asmx" to "http://xxxxxxxxx.com/xxx.asmx", ( it drops the "s" wich means it changes the protocol HTTPS to HTTP ).
If i set the Endpoint Address to "https://xxxxxxxx.com/xxxx.asmx" before calling any service on port, it works as it should be.
On the "generated" main WebServiceClient class the WSDL address and also Endpoint Address were set correctly ( with https ).
Also do i missing any logical part of it? Because i didnt changed it, it generated from WSDL by using "wsimport", it couldnt be a mistake, of if it would be, somebody could see that.
Thanks for any advice.
Umut KUNDUKANWelcome to the forum. Please don't post in threads that are long dead. When you have a question, start your own topic. Feel free to provide a link to an old post that may be relevant to your problem.
I'm locking this thread now. -
JavaMail cannot detect charset/decode e-mail after JAX-WS Endpoint init
There is the code (failed in Tomcat 6.0.20 / Jetty, JDK 1.6.0_18, JavaMail 1.4.3):
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<filter>
<filter-name>CompressResponse</filter-name>
<filter-class>Filter</filter-class>
</filter>
</web-app>
import runner.RunWebService;
import javax.servlet.*;
import java.io.IOException;
public class Filter implements javax.servlet.Filter {
public void init(FilterConfig filterConfig) throws ServletException {
try {
RunWebService run = new RunWebService();
run.readEmail();
run.initWebService();
run.readEmail();
} catch (Exception e) {
e.printStackTrace();
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
public void destroy() {
package runner;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.internet.MimeMessage;
import javax.xml.ws.Endpoint;
import java.util.Properties;
public class RunWebService {
public static void main(String[] arg) {
RunWebService runWebService = new RunWebService();
runWebService.initWebService();
runWebService.readEmail();
public void readEmail() {
try {
Properties props = System.getProperties();
props.put("mail.pop3.host", "pop.yandex.ru");
Session session = Session.getDefaultInstance(props, null);
Store store = session.getStore("pop3");
store.connect("pop.yandex.ru", 110, "**********@yandex.ru", "**********");
Folder folder = store.getFolder("INBOX");
folder.open(Folder.READ_WRITE);
Message message[] = folder.getMessages();
for (int i=0, n=message.length; i<n; i++) {
MimeMessage m = (MimeMessage) message;
System.out.println(i + ": " + message[i].getFrom()[0] + "\t" + message[i].getSubject());
System.out.println(m.getContent());
folder.close(false);
store.close();
} catch (Exception e) {
e.printStackTrace();
public void initWebService() {
String serviceUrl = "http://localhost:8088/";
Endpoint.publish(serviceUrl+ Test.class.getSimpleName(), new Test());
package runner;
import javax.jws.WebService;
@WebService
public class Test {
public void log() {
System.out.println("test");
How JAX-WS can affect JavaMail e-mail decoding ? How to fix it ?Got the following from the JAX-WS team:
I think it is related to:
[https://jax-ws.dev.java.net/issues/show_bug.cgi?id=707|https://jax-ws.dev.java.net/issues/show_bug.cgi?id=707]
[https://jax-ws.dev.java.net/issues/show_bug.cgi?id=656|https://jax-ws.dev.java.net/issues/show_bug.cgi?id=656]
In short, JAX-WS was registering a DataContentHandler that doesn't honor charset for text/plain mime type. We fixed it by copying the same data content handler from JavaMail. -
in richard mansion-haffel book, endpint interface (which extends java.rmi.Remote ) is mentioned .
but when i try to build a sample application in weblogic or axis , endpoint interface is not yet all used.
the implementation class is used directly.
can any one please tell me abt endpoint interface..I had found a solution on this. By changing the SessionBean extends EJBObject to Remote, then problem solved.
But here I had a newer challenge, this is the error log:
2006-05-15 15:37:00,296 ERROR gov.mohr.ems.core.entity.logic.PersistenceWebServicesTest - javax.xml.rpc.ServiceException: modeler error: expected root element "definitions" (in namespace "http://schemas.xmlsoap.org/wsdl/"), found element "html" (in namespace "http://www.w3.org/1999/xhtml") -
WSDL Service endpoint changes upon deployment to production?
What are the available techniques for changing the WSDL service-location attribute value when deploying from a development to a production environment. Obviously can go in and reedit the URL - but ....?
May also need to change other artifacts upon deployment.
What is THE preferred way to 'push a button' and have all the appropriate changes made.
Ask this as WebLogic has a tool to do just this and I am n ot aware of such a tool for Oracle.
THANKS - CaseyUsing ant.
- With BPEL a tool obant which compiles and deploys the process, you can set attributes to for deployment to various envirnonment
- or use ordinary ant, and do find/replace
http://download-uk.oracle.com/docs/cd/B31017_01/integrate.1013/b28981/deployproc.htm#sthref3294
http://orasoa.blogspot.com/2006/08/using-ant-in-bpel-environment.html -
Data Federator - Changing Web Service Datasource URL
Hi,
I am using Data Federator XI 3.0.
I have a few web service datasources with their WSDL URL set to the location of the web service on my development machine. If I deploy the web service on the production server, is there a way to simply update WSDL URL of the datasources in Data Federator without recreating them (copy to draft, update operations, reselect operations, etc.) ?
I tried putting the URL in a deployment context parameter, but it did not work. The datasources still reference the old URL even when I changed the URL in the parameter.
Thanks,
Chih HuiHi,
If you want to configure Connections post deployment, it is required for your application to be configured with a Writable MDS Repository.As I had mentioned in the blog also, for this you need a entry in adf-config.xml and that your server should have a registered MDS store. Unless you will do this, the connection endpoint changes that you are doing will not be saved.
To give an example, at the application end, in adf-config.xml, you need an entry like the following:
<adf-mds-config xmlns="http://xmlns.oracle.com/adf/mds/config">
<mds-config xmlns="http://xmlns.oracle.com/mds/config" version="11.1.1.000">
<persistence-config>
<metadata-store-usages>
<metadata-store-usage default-cust-store="true" deploy-target="true" id="myRepos">
</metadata-store-usage>
</metadata-store-usages>
</persistence-config>
</mds-config>
</adf-mds-config>
When you will deploy this app to a server with a registered MDS repository, the deployment will bring up a dialog where you will need to set(select/create) a partition for this app in the mds repository. Once, your deployment is done, now if you will change the endpoint using EM, it will save your changes.
-Vishal -
Sender SOAP Adapter - how to avoid changes of URL for diferent environments
Dear experts,
we have a concern with transports of PI objects in our environment.
Situation:
When we transport SOAP Sender objetcs in PI from Dev to Test the URL (Endpoint) changes automatically the hostname and the business system (target system in SLD). For example:
In Development to call the Web Service (Sender SOAP Adapater):
http://sappid1.evonceib.local:50100/XISOAPAdapter/MessageServlet?senderParty=&senderService=EvonceOSB_PEMP_D&receiverParty=&receiverService=&interface=PEMP_PagadoresMaintain_Async_Out_WS&interfaceNamespace=urn%3Aonce%3Asppemp%3Amanagedatosdepagadorpa_in_pemp
In Test to call the Web Service (Sender SOAP Adapater):
http://sappit1:50100/XISOAPAdapter/MessageServlet?senderParty=&senderService=EvonceOSB_PEMP_T&receiverParty=&receiverService=&interface=PEMP_PagadoresMaintain_Async_Out_WS&interfaceNamespace=urn%3Aonce%3Asppemp%3Amanagedatosdepagadorpa_in_pemp
Problem:
The consuming side only wants to have one endpoint and don't want to touch the development when transporting the consumer. Generally to find a work around via DNS aliases for the hostname should solve the prefix of the URL, but how to handle the difference of Business Systems senderService=EvonceOSB_PEMP_D and senderService=EvonceOSB_PEMP_T in the URL?
In the SLD I can not maintain two BS with the same name, when I do not define a transport target the import fails.
So anybody has an idea how to get exactly the same URL for diferent environments?
Thank you in advance,
Best Regards,
Karsten BlankensteinHi ,
It is recommended to use different environmemt for Dev,testing,Production. So your PI server host name and port will be different for every environment.
So URL will differ.
however if you dont want to change Business system Name then go for BUSINESS SERVICE/COMPONENT instead of BUSINESS SYSTEM. It will be same in every environment and also dont need to maintain anything in SLD -
Dynamic endpoints in SOA and OSB 11g
Hi,
In AIA we have aiaconfiguration properties.xml from where end points of wsdls will be accessible.
This enables ease in migrations so that if endpoint changes it is only need to be changed in aiaconfiguration properties.xml.
Can the same be acheived in SOA and OSB 11g projects?
Thanks,
SowmyaHi Sowmya,
Yes, it is very much possible in OSB 11g using customization (you may use it manually or programmitically). Please refer -
http://download.oracle.com/docs/cd/E14571_01/doc.1111/e15867/customization.htm#CACJCAGD
http://download.oracle.com/docs/cd/E14571_01/doc.1111/e15022/toc.htm
Regards,
Anuj -
Change the Exchange server name in outlook
Hello All,
Configured two Exchange server 2010. Both server have Mailbox, CAS and HUB installed. All the user use outlook (Exchange Client). All outlook configured with exchange server host name not mapi name. Now i need to change the exchange server name in outlook.
Is there any procedure to change the Exchange server name for outlook automatically. Please suggest.
ThanksHi,
Letās begin with the partition named when RPC endpoint Changes in the following article:
http://blogs.technet.com/b/aljackie/archive/2013/11/14/outlook-rpc-end-point-and-pf-the-microsoft-exchange-administrator-has-made-a-change-that-requires-you-quit-and-restart-outlook.aspx
āTo add further on the cas array, the Outlook clients with an existing Outlook profile would continue to use the old RPC endpoint rather than the new RPC endpoint (even though Autodiscover detected the change). This is because the old RPC endpoint does not
return an ecWrongServer response to the client. The RPC endpoint accepts the connection; therefore, Outlook ignores the Autodiscover response because it has a working connection.ā
In this case, except with recreating a profile, we can move mailboxes to force the Outlook client to do a profile discovery and update the profile based on new information.
For more information about moving mailboxes, please refer to the following article:
http://technet.microsoft.com/en-us/library/bb124495(v=exchg.141).aspx
If you have any question, please feel free to let me know.
Thanks,
Angela Shi
TechNet Community Support -
Adding multiple servlets under same application
Hi,
We are trying to add multiple servlets (2 to be precise) to an Application.
We are using j2ee1.3 server and deploytool for deploying the same.
Is it possible to have a single context root in which i'll be able to place both servlets with different aliases to access them?
The moment I specify same contextRoot in Web context tab of Application, i get an error saying Deployment failed because "mycontextroot" already exists.
When I assign two different context roots to each servlet, they can function, but then the URL for each changes inspite of being in the same application.
Any suggestions are welcomed.
Thank you,
Manish.Hi,
I did not quite follow the solution and I am wondering if it will solve a problem I am having.
I wish to define multple jax-rpc endpoints, but I want the classes servicing those endpoints to be able to communicate with one another. I tried placing them both in the same war and entering two endpoints in the jaxrpc-ri.xml file, but it didn't like the second endpoint entry being there.
Is there a way to do this? -
Basic Authentication with Web Service
Hello,
I am running S1AS7 on window XP. I have deployed the sample/jaxrpc/simple with basic authentication enabled. I have also changed to Client.java to set the USERNAME and PASSWORD (ie: stub._setProperty(javax.xml.rpc.Stub.USERNAME_PROPERTY, "j2ee");
Once I have deployed the war file and run the client, I got access denied exception.
I have checked the s1as7 log and here is the details:
FINE: Logging in user [j2ee] into realm: file using JAAS module: fileRealm
FINEST: Login module initialized: class com.iplanet.ias.security.auth.login.File
LoginModule
FINEST: File login succeeded for: j2ee
FINEST: JAAS login complete.
FINEST: JAAS authentication committed.
FINE: Password login succeeded for : j2ee
FINE: Set security context as user: j2ee
FINE: Authenticator[jaxrpc-simple]: Authenticated 'j2ee' with type 'BASIC'
FINE: SingleSignOn[server1]: Registering sso id '193F1461E0D9B982E6B4055C0134076
9' for user 'j2ee' with auth type 'BASIC'
FINE: Authenticator[jaxrpc-simple]: Calling accessControl()
FINEST: PRINCIPAL : j2ee hasRole?: staffmember
FINEST: PRINCIPAL TABLE: {}
FINE: Authenticator[jaxrpc-simple]: Failed accessControl() test
Please notice that the authentication worked, but the PRINCIPAL TABLE is null!!!! If I run the basic authentication sample, i can see from the log the PRINCIPAL TABLE is (...staff=[staffmember], j2ee=[staffmember],.....)
so somehow the app server treats the two sample differently with the same user id (j2ee/password)
any comments?
thanks..Hello,
I am running S1AS7 on window XP. I have deployed the
sample/jaxrpc/simple with basic authentication
enabled. I have also changed to Client.java to set
the USERNAME and PASSWORD (ie:
stub._setProperty(javax.xml.rpc.Stub.USERNAME_PROPERTY
"j2ee");
Once I have deployed the war file and run the client,
I got access denied exception.
I have checked the s1as7 log and here is the
details:
FINE: Logging in user [j2ee] into realm: file using
JAAS module: fileRealm
FINEST: Login module initialized: class
com.iplanet.ias.security.auth.login.File
LoginModule
FINEST: File login succeeded for: j2ee
FINEST: JAAS login complete.
FINEST: JAAS authentication committed.
FINE: Password login succeeded for : j2ee
FINE: Set security context as user: j2ee
FINE: Authenticator[jaxrpc-simple]: Authenticated
'j2ee' with type 'BASIC'
FINE: SingleSignOn[server1]: Registering sso id
'193F1461E0D9B982E6B4055C0134076
9' for user 'j2ee' with auth type 'BASIC'
FINE: Authenticator[jaxrpc-simple]: Calling
accessControl()
FINEST: PRINCIPAL : j2ee hasRole?: staffmember
FINEST: PRINCIPAL TABLE: {}
FINE: Authenticator[jaxrpc-simple]: Failed
accessControl() test
Please notice that the authentication worked, but the
PRINCIPAL TABLE is null!!!! If I run the basic
authentication sample, i can see from the log the
PRINCIPAL TABLE is (...staff=[staffmember],
j2ee=[staffmember],.....)
so somehow the app server treats the two sample
differently with the same user id (j2ee/password)
any comments?
thanks..
One more thing, here is my web.xml file:
<web-app>
<display-name>Hello World Application</display-name>
<description>A web application containing a simple JAX-RPC endpoint</description>
<session-config>
<session-timeout>60</session-timeout>
</session-config>
<security-constraint>
<web-resource-collection>
<web-resource-name>basic secuity test</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>POST</http-method>
<http-method>GET</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>staffmember</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>basic-file</realm-name>
</login-config>
</web-app> -
Hi all,
I am new to OSB. I am having trouble to understand how to do XSL transformation in OSB.
I have created a business service which targets wsdl with a particular schema for the input message. I have created a separate wsdl for the proxy service with another schema the input message.
I have to invoke the business service from proxy service. For this, I have added a route node and then a routing activity. In the request line of the routing activity i have used an assign where i will use XSLT to map input message of the proxy wsdl to the input message of the business service.
How do we access other variables when creating an XSLT?
Is my approach to the problem correct?
JohnHi,
I am doing that in an replace action.
In my flow I have the proxy service, then a pipeline, then I have the route.
In the pipeline I have replaced the input request using a XQuery transformation. When I test it, I see the input is coming till the route.
But the same pay load is valid and workin if I pass it when I invoke the route service independently. when i use it in the flow its not working.
Simply it says the system error
Below is the complete trace data
(receiving request)
Initial Message Context
added $body
<soapenv:Body xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<proj:alertReportDataRequestMessage xmlns:proj="http://www.projgis.org/PROJGISMessageSchema">
<proj:header>
<proj:RequestId>3333</proj:RequestId>
<proj:ReqTransactionId>333</proj:ReqTransactionId>
<proj:ConsumerId>string</proj:ConsumerId>
<proj:ReqTimestamp>2008-09-29T07:19:45</proj:ReqTimestamp>
</proj:header>
<proj:NameOfTenant>string</proj:NameOfTenant>
<proj:AddressOfTenant>string</proj:AddressOfTenant>
<proj:RentalAmount>string</proj:RentalAmount>
<proj:StartDateOfRent>2014-09-19T04:48:33</proj:StartDateOfRent>
<proj:EndDateOfRent>2006-08-19T22:57:14+05:30</proj:EndDateOfRent>
<proj:SalesOfOrder>string</proj:SalesOfOrder>
</proj:alertReportDataRequestMessage>
</soapenv:Body>
added $header
<soap:Header xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
</soap:Header>
added $inbound
<con:endpoint name="ProxyService$PROJGISProject$PROXYSERVICE$GetRentalExpiryAlertsData" xmlns:con="http://www.bea.com/wli/sb/context">
<con:service>
<con:operation>insertClientReport</con:operation>
</con:service>
<con:transport>
<con:uri>
/PROJGISProject/PROXYSERVICE/GetRentalExpiryAlertsData
</con:uri>
<con:mode>request-response</con:mode>
<con:qualityOfService>best-effort</con:qualityOfService>
<con:request xsi:type="http:HttpRequestMetaData" xmlns:http="http://www.bea.com/wli/sb/transports/http" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<tran:headers xsi:type="http:HttpRequestHeaders" xmlns:tran="http://www.bea.com/wli/sb/transports">
<http:Content-Type>text/xml; charset=utf-8</http:Content-Type>
<http:SOAPAction>
"http://xmlns.bodhtree.com/GetRentalExpiryAlertsData/insertClientReport"
</http:SOAPAction>
</tran:headers>
<tran:encoding xmlns:tran="http://www.bea.com/wli/sb/transports">utf-8</tran:encoding>
</con:request>
<con:response xsi:type="http:HttpResponseMetaData" xmlns:http="http://www.bea.com/wli/sb/transports/http" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<tran:headers xsi:type="http:HttpResponseHeaders" xmlns:tran="http://www.bea.com/wli/sb/transports">
<http:Content-Type>text/xml</http:Content-Type>
</tran:headers>
<tran:response-code xmlns:tran="http://www.bea.com/wli/sb/transports">0</tran:response-code>
</con:response>
</con:transport>
<con:security>
<con:transportClient>
<con:username><anonymous></con:username>
</con:transportClient>
</con:security>
</con:endpoint>
added $messageID
2570677769696620240-29ef401f.12cef26de6e.-7ef1
PipelinePairNode1
stage2
Message Context Changes
changed $body
<soapenv:Body xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<ins:ClientReportCollection xmlns:ins="http://xmlns.oracle.com/pcbpel/adapter/db/top/InsertClientReportTable">
<ins:ClientReport>
<ins:alertNo>1</ins:alertNo>
<ins:tenentName>string</ins:tenentName>
<ins:address>string</ins:address>
<ins:rentalAmt>string</ins:rentalAmt>
<ins:startDate>2014-09-19T04:48:33</ins:startDate>
<ins:endDate>2006-08-19T22:57:14+05:30</ins:endDate>
<ins:salesDocument>string</ins:salesDocument>
<ins:transId>333</ins:transId>
</ins:ClientReport>
</ins:ClientReportCollection>
</soapenv:Body>
changed $inbound
<con:endpoint name="ProxyService$PROJGISProject$PROXYSERVICE$GetRentalExpiryAlertsData" xmlns:con="http://www.bea.com/wli/sb/context">
<con:service>
<con:operation>insert</con:operation>
</con:service>
<con:transport>
<con:uri>
/PROJGISProject/PROXYSERVICE/GetRentalExpiryAlertsDataPush
</con:uri>
<con:mode>request</con:mode>
<con:qualityOfService>best-effort</con:qualityOfService>
<con:request xsi:type="http:HttpRequestMetaData" xmlns:http="http://www.bea.com/wli/sb/transports/http" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<tran:headers xsi:type="http:HttpRequestHeaders" xmlns:tran="http://www.bea.com/wli/sb/transports">
<http:Content-Type>text/xml; charset=utf-8</http:Content-Type>
<http:SOAPAction>
"http://xmlns.bodhtree.com/GetRentalExpiryAlertsData/insertClientReport"
</http:SOAPAction>
</tran:headers>
<tran:encoding xmlns:tran="http://www.bea.com/wli/sb/transports">utf-8</tran:encoding>
</con:request>
<con:response xsi:type="http:HttpResponseMetaData" xmlns:http="http://www.bea.com/wli/sb/transports/http" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<tran:headers xsi:type="http:HttpResponseHeaders" xmlns:tran="http://www.bea.com/wli/sb/transports">
<http:Content-Type>text/xml</http:Content-Type>
</tran:headers>
<tran:response-code xmlns:tran="http://www.bea.com/wli/sb/transports">0</tran:response-code>
</con:response>
</con:transport>
<con:security>
<con:transportClient>
<con:username><anonymous></con:username>
</con:transportClient>
</con:security>
</con:endpoint>
changed $header
<soap:Header xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
</soap:Header>
RouteNode1
Routed Service
Route to: "GetRentalExpiryAlertsDataPush"
$outbound:
<con:endpoint name="ProxyService$PROJGISProject$PROXYSERVICE$GetRentalExpiryAlertsDataPush" xmlns:con="http://www.bea.com/wli/sb/context">
<con:service>
<con:operation>insertClientReport</con:operation>
</con:service>
<con:transport>
<con:mode>request</con:mode>
<con:qualityOfService>best-effort</con:qualityOfService>
<con:request xsi:type="http:HttpRequestMetaData" xmlns:http="http://www.bea.com/wli/sb/transports/http" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<tran:headers xsi:type="http:HttpRequestHeaders" xmlns:tran="http://www.bea.com/wli/sb/transports">
<http:Content-Type>text/xml</http:Content-Type>
</tran:headers>
</con:request>
</con:transport>
<con:security>
<con:doOutboundWss>false</con:doOutboundWss>
</con:security>
</con:endpoint>
$body (request):
<soapenv:Body xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<ins:ClientReportCollection xmlns:ins="http://xmlns.oracle.com/pcbpel/adapter/db/top/InsertClientReportTable">
<ins:ClientReport>
<ins:alertNo>1</ins:alertNo>
<ins:tenentName>string</ins:tenentName>
<ins:address>string</ins:address>
<ins:rentalAmt>string</ins:rentalAmt>
<ins:startDate>2014-09-19T04:48:33</ins:startDate>
<ins:endDate>2006-08-19T22:57:14+05:30</ins:endDate>
<ins:salesDocument>string</ins:salesDocument>
<ins:transId>333</ins:transId>
</ins:ClientReport>
</ins:ClientReportCollection>
</soapenv:Body>
$header (request):
<soap:Header xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
</soap:Header>
$attachments (request):
<con:attachments xmlns:con="http://www.bea.com/wli/sb/context"/>
Message Context Changes
added $outbound
<con:endpoint name="ProxyService$PROJGISProject$PROXYSERVICE$GetRentalExpiryAlertsDataPush" xmlns:con="http://www.bea.com/wli/sb/context">
<con:service>
<con:operation>insertClientReport</con:operation>
</con:service>
<con:transport>
<con:uri>
/PROJGISProject/PROXYSERVICE/GetRentalExpiryAlertsDataPush
</con:uri>
<con:mode>request</con:mode>
<con:qualityOfService>best-effort</con:qualityOfService>
<con:request xsi:type="http:HttpRequestMetaData" xmlns:http="http://www.bea.com/wli/sb/transports/http" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<tran:headers xsi:type="http:HttpRequestHeaders" xmlns:tran="http://www.bea.com/wli/sb/transports">
<http:Content-Type>text/xml; charset=utf-8</http:Content-Type>
</tran:headers>
<tran:encoding xmlns:tran="http://www.bea.com/wli/sb/transports">utf-8</tran:encoding>
</con:request>
<con:response xsi:type="http:HttpResponseMetaData" xmlns:http="http://www.bea.com/wli/sb/transports/http" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<tran:headers xsi:type="http:HttpResponseHeaders" xmlns:tran="http://www.bea.com/wli/sb/transports">
<http:Content-Type>text/xml</http:Content-Type>
</tran:headers>
<tran:response-code xmlns:tran="http://www.bea.com/wli/sb/transports">1</tran:response-code>
</con:response>
</con:transport>
<con:security>
<con:doOutboundWss>false</con:doOutboundWss>
</con:security>
</con:endpoint>
changed $body
<soapenv:Body xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<ins:ClientReportCollection xmlns:ins="http://xmlns.oracle.com/pcbpel/adapter/db/top/InsertClientReportTable">
<ins:ClientReport>
<ins:alertNo>1</ins:alertNo>
<ins:tenentName>string</ins:tenentName>
<ins:address>string</ins:address>
<ins:rentalAmt>string</ins:rentalAmt>
<ins:startDate>2014-09-19T04:48:33</ins:startDate>
<ins:endDate>2006-08-19T22:57:14+05:30</ins:endDate>
<ins:salesDocument>string</ins:salesDocument>
<ins:transId>333</ins:transId>
</ins:ClientReport>
</ins:ClientReportCollection>
</soapenv:Body>
changed $inbound
<con:endpoint name="ProxyService$PROJGISProject$PROXYSERVICE$GetRentalExpiryAlertsData" xmlns:con="http://www.bea.com/wli/sb/context">
<con:service>
<con:operation>insert</con:operation>
</con:service>
<con:transport>
<con:uri>
/PROJGISProject/PROXYSERVICE/GetRentalExpiryAlertsDataPush
</con:uri>
<con:mode>request</con:mode>
<con:qualityOfService>best-effort</con:qualityOfService>
<con:request xsi:type="http:HttpRequestMetaData" xmlns:http="http://www.bea.com/wli/sb/transports/http" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<tran:headers xsi:type="http:HttpRequestHeaders" xmlns:tran="http://www.bea.com/wli/sb/transports">
<http:Content-Type>text/xml; charset=utf-8</http:Content-Type>
<http:SOAPAction>
"http://xmlns.bodhtree.com/GetRentalExpiryAlertsData/insertClientReport"
</http:SOAPAction>
</tran:headers>
<tran:encoding xmlns:tran="http://www.bea.com/wli/sb/transports">utf-8</tran:encoding>
</con:request>
<con:response xsi:type="http:HttpResponseMetaData" xmlns:http="http://www.bea.com/wli/sb/transports/http" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<tran:headers xsi:type="http:HttpResponseHeaders" xmlns:tran="http://www.bea.com/wli/sb/transports">
<http:Content-Type>text/xml</http:Content-Type>
</tran:headers>
<tran:response-code xmlns:tran="http://www.bea.com/wli/sb/transports">0</tran:response-code>
</con:response>
</con:transport>
<con:security>
<con:transportClient>
<con:username><anonymous></con:username>
</con:transportClient>
</con:security>
</con:endpoint>
changed $header
<soap:Header xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
</soap:Header>
Service Error Handler
$fault: <con:fault xmlns:con="http://www.bea.com/wli/sb/context">
<con:errorCode>BEA-380000</con:errorCode>
<con:location>
<con:node>RouteNode1</con:node>
<con:path>response-pipeline</con:path>
</con:location>
</con:fault>
System Error Handler
$fault: <con:fault xmlns:con="http://www.bea.com/wli/sb/context">
<con:errorCode>BEA-380000</con:errorCode>
<con:location>
<con:node>RouteNode1</con:node>
<con:path>response-pipeline</con:path>
</con:location>
</con:fault>
Is there any place where I can refer how to work with passing data from current flow to the next flow.
Do i need to do the transformation before invoking the route, or inside the route service request pipeline?
Do I need to change the method, URI etc as wells? before invoking the routing?
--Khaleel
Maybe you are looking for
-
"parted" shows my partition table as follows: Number Start End Size Type File system Flags 1 1049kB 106MB 105MB primary ntfs boot 2 106MB 64.9GB 64.8GB primary ntfs 4 64.9GB 456GB 391GB extended lba 8 64.9GB 96.3GB 31.4GB logical ext4 9 96.3GB 101GB
-
Brand new 13-inch MBP, upgraded ram to 4GB and replaced the HD with the 320GH 7200RPM drive from my previous MBP. Preformed an Archive & Install of the OS, everything works great. The problem is that the Screen-Saver pref pane kills the System Prefer
-
Relevance of Maximum Plan Value for Cost Center wise SKF plan Data
Hi, Will you please tell me the relevence of data entered as Maximum Plan Value for the Cost center wise SKF data plan i.e. data entered through T Code KP46 using planning layout 1-301 with planning profile SAPALL. Regards, Partha B.
-
Mobile Version: How to see all highlights and notes we made in a PDF document?
Mobile Version (Android): How to see all highlights and notes we made in a PDF document?
-
Dear All! Please can you check what is wrong on appending of internal table III_YMMM_TBL74. It's going to be overwriting always. All what I want to do is populating III_YMMM_TBL74 while is condition if sy-subrc = 0 AND linp > 1. is complied *CODE TYP