NullPointerException using @Resource for JDBC lookup

I had the following working and am trying to convert to using @Resource and have been unsuccessful:
First I had the following working, inside a jar within an ear deployed to glassfish v3 and no sun-ejb-jar.xml file:
public CM
public CM() {
InitialContext ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup("jdbc/xDataSource");
Connection conn = ds.getConnection();
When I switched to the following I get a NullPointerException when I deploy, indicating that the resource could not be found
@Stateful
public CM
@Resource(name="jdbc/xDataSource", mappedName="jdbc/xDataSource")
private DataSource ds;
public CM() {
Connection conn = ds.getConnection();
and added sun-ejb-jar.xml file to META-INF directory
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sun-ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD GlassFish Application Server 3.0 EJB 3.1//EN"
"http://www.sun.com/software/appserver/dtds/sun-ejb-jar_3_1-0.dtd">
<sun-ejb-jar>
<enterprise-beans>
<ejb>
<ejb-name>CM</ejb-name>
<resource-ref>
<res-ref-name>jdbc/xDataSource</res-ref-name>
<jndi-name>jdbc/xDataSource</jndi-name>
</resource-ref>
</ejb>
</enterprise-beans>
</sun-ejb-jar>
P.S. Sorry about not using code tags I'm not sure which tag to use to properly format it.

Do you know what those authorizations should be when using a standard JDBC Lookup mapping function?  Currently we have a custom UDF that calls the table via a <schema>.<table name> and the current user in the Receiver Comm Channel works just fine.  It appears that when using the standard SAP JDBC Lookup function it calls the table directly and the user in the Comm Channel no longer has the correct permissions.
I would expact that the JDBC Lookup function would allow for a standard "Read" on any table as long as the user has that level of access...but not in this case.  I am going to bring it up to our SAP XI software development team and see what they say, but wanted to get some views from our other experts as well.
Thanks,
Matt

Similar Messages

  • Authorizations required in Communication Channel for JDBC Lookup mapping

    Is there of list of required authorizations and or patch needed to use a JDBC Lookup in a message mapping?  We are using PI 7.1, and trying to use the new JDBC Lookup feature.  We currently have a user that is not an ower of the DB tables, this does work in our current solution of using UDFs, but we would like to avoid switching it to a user that has full access on the tables, e.g. SAPXI*
    Current environment: PI 7.1 (not EhP1)
    Thanks,
    Matt

    Do you know what those authorizations should be when using a standard JDBC Lookup mapping function?  Currently we have a custom UDF that calls the table via a <schema>.<table name> and the current user in the Receiver Comm Channel works just fine.  It appears that when using the standard SAP JDBC Lookup function it calls the table directly and the user in the Comm Channel no longer has the correct permissions.
    I would expact that the JDBC Lookup function would allow for a standard "Read" on any table as long as the user has that level of access...but not in this case.  I am going to bring it up to our SAP XI software development team and see what they say, but wanted to get some views from our other experts as well.
    Thanks,
    Matt

  • UDF for JDBC lookup in PI 71

    I am facing some issue while importing the SQL meta-data from db2 in PI 7.1 , guess the db2 version is old and not compatible with 7.1 or could be problem with drivers, I want to go head with writing UDF for the jdbc lookup, can you please let me know  the code and how it can be written or blogs, thanks

    >>> can you please let me know the code and how it can be written or blogs, thanks
    You can try this link if you dont want to use graphical jdbc lookup... Follow this link , it has code to use ...
    /people/siva.maranani/blog/2005/08/23/lookup146s-in-xi-made-simpler
    Also refer these links
    For 7.0 -  http://scn.sap.com/people/william.li/blog/2007/03/30/using-jdbc-connection-pool-in-xi-message-mapping
    For 7.1 http://scn.sap.com/people/jin.shin/blog/2008/02/15/sap-pi-71-mapping-enhancements-series-graphical-support-for-jdbc-and-rfc-lookups

  • Problem using DataSource for JDBC applications

    import javax.sql.*;
    import java.sql.*;
    import java.io.*;
    import java.text.*;
    import javax.naming.*;
    public class CreateMovieTables {
         //static String driver="COM.cloudscape.core.JDBCDriver";
         //static String url="jdbc:cloudscape:";
         String leadActor,title,leadActress,type,dateOfRelease;
         Connection connection;
         Statement statement;
         DataSource dataSource;
         public void initialize() throws SQLException,NamingException{
              //Class.forName(driver);
              Context initialContext = new InitialContext();
              //connection = DriverManager.getConnection(url + "Movies;create=true");
              dataSource = (DataSource) initialContext.lookup("jdbc/Cloudscape");
              connection = dataSource.getConnection();
    the code goes on
    when i start the j2ee sdk server, the cloudscape server the message i get when i run the program is...
    No local string for datasource.wrongclient
    java.sql.SQLException:
    at com.sun.enterprise.resource.JdbcDataSource.getConnection(JdbcDataSource.java:40)
    at CreateMovieTables.initialize(CreateMovieTables.java:23)
    at CreateMovieTables.main(CreateMovieTables.java:86)
    can anyone please suggest as to where i may be going wrong
    thanx
    -NDK

    I don't agree that a User or System DSN is needed - that's a Windows idiom.
    I haven't used the J2EE SDK to set up a data source, but I know that when I do it in Tomcat I've got to put a <resource-ref> tag in the web.xml that identifies the JNDI lookup string, and then the JDBC driver/URL/username/password details under a <Resource> tag in the context.xml to tell the data source how to create the JDBC connection.
    My <resource-ref> name is "jdbc/APIPrototype". My JNDI lookup string looks like "java:comp/env/jdbc/DataSourceName".
    You've got to do more than just put the JNDI lookup string in the Context lookup. Your error message sounds like the server is saying you've haven't done that set-up work.
    Just a guess - perhaps it's something else, but I couldn't tell from your note. - MOD

  • Error while testing in message mapping for JDBC lookup

    The error is as follows.
    Exception during processing the payload.Problem when calling an adapter by using communication channel JLU_chan (Party: , Service: JLU_BUSS, Object ID: 0519f96e59c534829ebdcdea837dacb7) XI AF API call failed. Module exception: (No information available). Cause Exception: 'Error processing request in sax parser: Error when executing statement for table/stored proc. 'table' (structure 'statement'): java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Missing ), ], or Item in query expression 'username  = [Ljava.lang.String;@d7f610 and password = [Ljava.lang.String;@5b96eb'.'.
    com.sap.aii.mapping.lookup.LookupException: Problem when calling an adapter by using communication channel JLU_chan (Party: , Service: JLU_BUSS, Object ID: 0519f96e59c534829ebdcdea837dacb7) XI AF API call failed. Module exception: (No information available). Cause Exception: 'Error processing request in sax parser: Error when executing statement for table/stored proc. 'table' (structure 'statement'): java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Missing ), ], or Item in query expression 'username  = [Ljava.lang.String;@d7f610 and password = [Ljava.lang.String;@5b96eb'.'.
         at com.sap.aii.ibrun.server.lookup.AdapterProxyLocal.execute(AdapterProxyLocal.java:131)
         at com.sap.aii.ibrun.server.lookup.SystemAccessorInternal.execute(SystemAccessorInternal.java:68)
         at com.sap.aii.ibrun.server.lookup.SystemAccessorHmiServer.process(SystemAccessorHmiServer.java:149)
         at com.sap.aii.ibrun.server.lookup.SystemAccessorHmiServer.process(SystemAccessorHmiServer.java:77)
         at com.sap.aii.utilxi.hmis.server.HmisServiceImpl.invokeMethod(HmisServiceImpl.java:169)
         at com.sap.aii.utilxi.hmis.server.HmisServer.process(HmisServer.java:178)
         at com.sap.aii.utilxi.hmis.web.HmisServletImpl.processRequestByHmiServer(HmisServletImpl.java:296)
         at com.sap.aii.utilxi.hmis.web.HmisServletImpl.processRequestByHmiServer(HmisServletImpl.java:211)
         at com.sap.aii.utilxi.hmis.web.workers.HmisInternalClient.doWork(HmisInternalClient.java:70)
         at com.sap.aii.utilxi.hmis.web.HmisServletImpl.doWork(HmisServletImpl.java:496)
         at com.sap.aii.utilxi.hmis.web.HmisServletImpl.doPost(HmisServletImpl.java:634)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:401)
         at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:266)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:387)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:365)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.invokeWebContainer(RequestAnalizer.java:944)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.handle(RequestAnalizer.java:266)
         at com.sap.engine.services.httpserver.server.Client.handle(Client.java:95)
         at com.sap.engine.services.httpserver.server.Processor.request(Processor.java:160)
         at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:33)
         at com.sap.engine.core.cluster.impl6.session.MessageRunner.run(MessageRunner.java:41)
         at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)
         at java.security.AccessController.doPrivileged(Native Method)
         at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:100)
         at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:170)
    Root Cause:
    com.sap.aii.af.service.api.AFException: XI AF API call failed. Module exception: (No information available). Cause Exception: 'Error processing request in sax parser: Error when executing statement for table/stored proc. 'table' (structure 'statement'): java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Missing ), ], or Item in query expression 'username  = [Ljava.lang.String;@d7f610 and password = [Ljava.lang.String;@5b96eb'.'.
         at com.sap.aii.af.service.api.AdapterAccess.sendMsg(AdapterAccess.java:214)
         at com.sap.aii.af.service.api.AdapterAccess.execute(AdapterAccess.java:283)
         at com.sap.aii.ibrun.server.lookup.AdapterProxyLocal.execute(AdapterProxyLocal.java:123)
         at com.sap.aii.ibrun.server.lookup.SystemAccessorInternal.execute(SystemAccessorInternal.java:68)
         at com.sap.aii.ibrun.server.lookup.SystemAccessorHmiServer.process(SystemAccessorHmiServer.java:149)
         at com.sap.aii.ibrun.server.lookup.SystemAccessorHmiServer.process(SystemAccessorHmiServer.java:77)
         at com.sap.aii.utilxi.hmis.server.HmisServiceImpl.invokeMethod(HmisServiceImpl.java:169)
         at com.sap.aii.utilxi.hmis.server.HmisServer.process(HmisServer.java:178)
         at com.sap.aii.utilxi.hmis.web.HmisServletImpl.processRequestByHmiServer(HmisServletImpl.java:296)
         at com.sap.aii.utilxi.hmis.web.HmisServletImpl.processRequestByHmiServer(HmisServletImpl.java:211)
         at com.sap.aii.utilxi.hmis.web.workers.HmisInternalClient.doWork(HmisInternalClient.java:70)
         at com.sap.aii.utilxi.hmis.web.HmisServletImpl.doWork(HmisServletImpl.java:496)
         at com.sap.aii.utilxi.hmis.web.HmisServletImpl.doPost(HmisServletImpl.java:634)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:401)
         at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:266)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:387)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:365)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.invokeWebContainer(RequestAnalizer.java:944)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.handle(RequestAnalizer.java:266)
         at com.sap.engine.services.httpserver.server.Client.handle(Client.java:95)
         at com.sap.engine.services.httpserver.server.Processor.request(Processor.java:160)
         at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:33)
         at com.sap.engine.core.cluster.impl6.session.MessageRunner.run(MessageRunner.java:41)
         at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)
         at java.security.AccessController.doPrivileged(Native Method)
         at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:100)
         at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:170)

    I'll give you the query.Can you please check my code.Code is as follows.
    //write your code here
    String Query = " ";
    Channel channel = null;
    DataBaseAccessor accessor = null;
    DataBaseResult resultSet = null;
    //Build the Query String
    Query = "Select role from login where username  = " + username + " and password = " + password + "" ;
    try{
    //Determine a channel as created in the configuration
    channel = LookupService.getChannel("JLU_BUSS","JLU_chan");
    //  Get a system accessor for a channel.As the call is being made to the database an database accessor is obtained.
    accessor = LookupService.getDataBaseAccessor(channel);
    // Execute the Query and get the values in the resultSet.
    resultSet = accessor.execute(Query);
    for(Iterator rows = resultSet.getRows();rows.hasNext();)
    Map rowMap = (Map)rows.next();
    result.addValue((String)rowMap.get("role"));
    catch(Exception ex){
    result.addValue(ex.getMessage());
    finally{
    try{
    if (accessor!=null) accessor.close();
    catch(Exception e){
    result.addValue(e.getMessage());

  • Where-used list for program lookups

    Hi experts,
    I have an infoprovider that I know is being looked up via start routine by one update rule. Is there a way to search through all existing update rules to check at the code level (if possible) if there are any other rules looking up my infoprovider?  Im hoping for a where-used type of solution or a table I can use to search. This is sort of an impact analysis check.
    Mark

    All;
    I am in the similar situation where I have to find out a list of look ups (routines/update rules) on my master data M table.
    When I did where used from se11 View on infoobject M table it gives back few programs but I am not sure how to fid out which update rules are using those.
    Please advise.
    Thanks.

  • Error in User defined function for jdbc lookup

    I am getting th error as follows "Method TestJDBCAPI$ with 2 arguments not found in class com.sap.xi.tf._JLU_MM_" when i a m testing in message mapping

    //write your code here
    String Query = " ";
    Channel channel = null;
    DataBaseAccessor accessor = null;
    DataBaseResult resultSet = null;
    //Build the Query String
    Query = "Select role from login where username = " + username[0] + " and password = " + password[0] ;
    try{
    //Determine a channel as created in the configuration
    channel = LookupService.getChannel("JLU_BUSS","JLU_chan");
    //  Get a system accessor for a channel.As the call is being made to the database an database accessor is obtained.
    accessor = LookupService.getDataBaseAccessor(channel);
    // Execute the Query and get the values in the resultSet.
    resultSet = accessor.execute(Query);
    for(Iterator rows = resultSet.getRows();rows.hasNext();)
    Map rowMap = (Map)rows.next();
    result.addValue((String)rowMap.get("role"));
    catch(Exception ex){
    result.addValue(ex.getMessage());
    Above is my udf.My logic is that for the given username and password it should select the corresponding role from the database.

  • Is it possible for the JDBC Lookup in PI 7.1 to read other user's table?

    Hi,
    I have the requirement of using the standard JDBC Lookup in PI 7.1. The user setup in the receiver JDBC adapter is only a service user that has a read access on some tables that are owned by another user or schema. When I am trying to do the import of Table's metadata, I can only see tables that are owned by the user setup in the receiver JDBC adapter.
    Is there any any ways on how the user used in the receiver JDBC adapter can read another user's table (given that it has read access) during the import of Table's metadata?
    Thank you in advacne for any response.
    -Niro

    Hi Matt,
    I am struck in a similar kind of problem.
    I have to do lookup from a view(not a table) available in a particular schema.
    When i am using the external definition --> category dbtab
    I am able to see all the tables available in the schema.Whereas i not able to see any views.
    Please let me know how to proceed in such scenario?
    Thanks,
    Sudhansu

  • How to use a global variable for reading a query resultset in JDBC lookup?

    Hi Friends,
    Using JDBC lookup, I am trying to read from a table Emp1 using a user defined function. In PI 7.0, this function returns values of a single column only even if you fire a " Select * " query. I am planning to use a global variable(array) that stores individual column values of the records returned by a "select *" query. Need pointers on as to how a global variable can be declared and used to acheive the above scenario. Kindly explain with an example. Any help would be appreciated.
    Thanks,
    Amit.

    Hi Amit,
    Sounds like a good idea but then you would need an external db and update the table in a thread safe way !.
    Regarding your question as to how to work with global variable please refer https://www.sdn.sap.com/irj/scn/weblogs?blog=/pub/wlg/1352. [original link is broken] [original link is broken] [original link is broken]
    Rgds
    joel

  • Right way to configure Tomcat JDBC resource for MaxDB

    Hi,
    i need to configure one tomcat server with a pool of connections for a MaxDB instance with follow database parameters:
    MAXUSERTASKS=150
    SESSION_TIMEOUT=60
    i do this configuration on tomcat:
    <Resource name="jdbc/myApp"
                    auth="Container"
                    type="javax.sql.DataSource"
                    username="DBUSER"
                    password="secret"
                    driverClassName="com.sap.dbtech.jdbc.DriverSapDB"
                    url="jdbc:sapdb://dbserver/DBNAME"
                    maxActive="150"
                    maxIdle="75"
                    validationQuery="SELECT NOW() FROM DBA.DUAL"/>
    is this the right way? there is a way to check if the pool is working at database side? at java side i checked that the javax.sql.DataSource.loginTimeout is Unavailable, then what is the better way to avoid errors like:
    2008-06-02 13:54:36  2165 WNG 11824 COMMUNIC Releasing  T187 command timeout
    i think that this problem occurs because the SESSION_TIMEOUT is 60, and the loginTimeout is Unavailable at javax.sql.DataSource then the DBCP of tomcat dont know when need to revalidate the session.
    thanks for any help.
    Clóvis

    Hi Clovis,
    to be honest, I'm no Tomcat expert at all. All I can do is read the documentation.
    The error message you posted was about an timeout due to a too long idle session.
    From the changes in your connection pool setup I cannot see any parameter that would influence this.
    Instead - as already written - you may either want to change the session timeout in general, for the user or (by adding some connection parameters) for the sessions.
    Concerning the question on wether it's better to have many connections or just a few - well this depends on what the java tasks do with the sessions.
    The connection pool is used for saving resources on the database side and the time necessary to logon and create a session.
    So whenever any of the java tasks needs a db connections it should "just get one" from the pool.
    When you have "high load" (by the way what exactly does that mean? High CPU usage on the J2EE server? Huge transaction volume? Many parallel transactions?) this does not change.
    Anyhow you have to be aware of the fact that the database can only process as many SQL requests in parallel as there are user kernel threads (UKTs) and each of the UKTs need to be able to run on a seperate CPU core. Therefore if it's necessary to have real parallel SQL activity many connections may not be the best idea.
    On the other hand this requirement is seldom necessary - most often sessions can wait a bit until they get the reply from the database and synchronize on each other later on. At least that's how we do it with NetWeaver.
    KR Lars

  • How to use JDBC Lookup in PI 7.1 ?

    Hi,
    Please advise how to use JDBC lookup in message mapping PI 7.1 ? any reference link / document  ?
    I have followed this step below :
    1. Create the external definition for the database table.
    2. Use the external definition (table) in message mapping JDBC Lookup.
    But the target still "Yellow colour" meanint the mapping hasnot completed yet ? why ? and when i double click the JDBC lookup
    there some error message
    "No suitable parameter found; define new parameter of type 'Channel' first"
    Please advise.
    Thank You and Best Regards
    Fernand

    Hi Fernand,
    JDBC Lookup can be done in PI 7.1 using below mentioned steps :
    1) Create a communication channel between PI and the database to connect to database.
    2) Import the table data as External Definition.
    3) In message mapping where this lookup is to be used select JDBC Lookup under Conversions and map
    4) Double Click on JDBC Lookup
    5) Select parameter and a database table (imported as the external definition). All the elements of the table will appear in the middle column. Select and move the input parameters to the left side column and the output parameters to the right side column. Click OK. 
    6) Under message mapping go to signature tab and define the parameter as channel and category as JDBC Adapter Type. 
    7) Under Operation mapping define the parameter & associate it with parameter defined in Message Mapping.
    Thanks
    Amit

  • Graphical message mapping examples for JDBC and RFC lookup

    hi, can any body provide me graphical message mapping examples for the "JDBC Lookup" function and "RFC Lookup" function?
    I'm now studying the graphical message mapping and want to try those 2 functions. thank you.
    I expect the examples to be simple enoung, not need to set up much.

    >
    Madhu_1980 wrote:
    > can u check this link:
    >
    > PI 7.0 & 7.1 Mapping - Blogs,Articles,Wiki,Code Samples and Videos Collections https://wiki.sdn.sap.com/wiki/pages/viewpage.action?pageId=79955426  
    >
    > it contains a link : SAP PI 7.1 Mapping Enhancements Series: Graphical Support for JDBC and RFC Lookups /people/jin.shin/blog/2008/02/15/sap-pi-71-mapping-enhancements-series-graphical-support-for-jdbc-and-rfc-lookups
    May be I'm too foolish to follow those links, I got issues of each links.
    What I really want is an example from step0
    Swarup:
    Refer the Lookup document - Easy Lookup in Process Integration 7.1
    https://www.sdn.sap.com/irj/scn/index?rid=/library/uuid/20befc9a-aa72-2b10-ae9b-b0988791d457
    The first step is "Create an RFC Enabled Function Module for look up", but where can I create the function module? Should I use ESB, IB? or use transaction 'SE11' ?
    Kulkarni:
    Very good links for RFC lookup with 7.0/3.0
    https://www.sdn.sap.com/irj/scn/index?rid=/library/uuid/70d90a91-3cf4-2a10-d189-bfd37d9c3231&overridelayout=true
    At page6 "PI Development/Configuration", it saies "You are on the design maintenance screen in the Integration Builder.Expand the subnodes for the software component version for which you want to import interfaces".
    What is "design maintenance screen" ? My IB version is: Service Pack:08 Release:NW07_08_REL.
    When I open IB, it display a screen titled with "Configuration: Intergation Builder", I did not find "software component version" node on the left tree.
    Madhu_1980 :
    it contains a link : SAP PI 7.1 Mapping Enhancements Series: Graphical Support for JDBC and RFC Lookups /people/jin.shin/blog/2008/02/15/sap-pi-71-mapping-enhancements-series-graphical-support-for-jdbc-and-rfc-lookups
    The Prerequisites state:
    The JDBC channel to be used for the lookup must be configured and activated in the Integration Directory.
    The definition of the table used for the lookup must already be imported into the ES Repository as an external definition
    But I don't know how to create a JDBC channel and define the table.

  • How can i use the weblogic jdbc driver for sqlserver?

    hello
    i have downloaded and installed the weblogic on my windows2000 server,then i want to use the weblogic jdbc driver for sqlserver2000 outside of the weblogic,as follow:
    1 add following string to my classpath environment of the wndows2000: E:\bea\wlserver6.1\lib\mssqlserver4v65.jar
    2 then i write a test program as:
    import weblogic.jdbc.mssqlserver4.Driver;
    import java.sql.*;
    public class test{
    public static void main(String argv[]){
    try{ Class.forName("weblogic.jdbc.mssqlserver4.Driver");
    Connection
    conn=DriverManager.getConnection"jdbc:weblogic:mssqlserver4:localhost:1433","sa",""); }catch(Exception e){ System.out.println(e.getMessage()); }
    4 when i execute it,it throw a exception:
    Exception in thread "main" java.lang.NoClassDefFoundError: weblogic/version at weblogic.jdbc.mssqlserver4.TdsStatement.getLicenseStr(TdsStatement.java:2665) at weblogic.jdbc.mssqlserver4.TdsStatement.microsoftLogin(TdsStatement.java:2474) at weblogic.jdbc.mssqlserver4.MicrosoftConnection.beginLogin(MicrosoftConnection.java:42) at weblogic.jdbc.mssqlserver4.TdsConnection.login(TdsConnection.java:57) at weblogic.jdbc.mssqlserver4.MicrosoftConnection.login(MicrosoftConnection.java:53) at weblogic.jdbc.mssqlserver4.BaseConnection.prepareConnection(BaseConnection.java:187) at weblogic.jdbc.mssqlserver4.Driver.newConnection(Driver.java:34) at weblogic.jdbc.mssqlserver4.ConnectDriver.connect(ConnectDriver.java:151) at java.sql.DriverManager.getConnection(DriverManager.java:517) at java.sql.DriverManager.getConnection(DriverManager.java:177) at test.main(test.java:7)
    who can help me?thank you!

    Hi,
    Mail me the jar file as I am using Weblogic 6.1 to my email id [email protected]
    Else tell me the site from where u have downloaded and i will do the same.
    I will test the same and let you know.
    Thanks,
    Seetesh

  • Useful Document/resources For Begginners

    this document is easily on net
    WS-BPEL Guide
    Last changed on Dec 10, 2004 by Matthieu Riou
    What is this article about ?
    This is an introduction to WS-BPEL that should give you a practical understanding of what you have to do to create a nice WS-BPEL process, dwelling on most important details. After reading this article you probably won't be able to write a WS-BPEL process from top to bottom. But you should have a pretty good notion of what can be done with it, what it involves and be familiar with the main elements of the grammar.
    First things first, here are the answers to the most trivial questions:
    •     What this new and unique acronym means? Web Services Business Process Execution Language.
    •     What is WS-BPEL? It's an XML grammar (a W3C schema) defining and standardizing structures necessary for web services orchestration.
    •     What does WS-BPEL? Well, actually nothing as it's just a grammar. But a WS-BPEL engine can do many things when executing your process. Like reacting to message reception, manipulating the message data, sending messages to web services and evaluating expressions.
    •     Where does it come from? It has been written by IBM, BEA Systems and Microsoft. Siebel and SAP joined these three and the specification has bee donated to OASIS.
    •     Where does WS-BPEL fit? It's a very good candidate to add an orchestration layer to a Service Oriented Architecture. It will make your services collaborate nicely and will encapsulate the cross-service business logic. It will also help you to introduce long-living transactions.
    Now that the introductory questions have been answered and before going any further I would like to clarify one thing about WSDL (I voluntarily wrote WSDL here, it's not a weird typo). WS-BPEL heavily relies on WSDL to describe the web services it is interacting with (we will see that soon) but that doesn't mean that it can only interact with services using XML(SOAP)/HTTP. WSDL introduces bindings which are the declaration of your services underlying communication medium. Bindings can be declared for local Java, JMS, RMI or anything you like (you might want to check Apache WSIF ). So a WS-BPEL engine using the right bindings could very well invoke many different services.
    So let's see how we are going to take a look at WS-BPEL. First, I'm going to give a very simple and classic example, just to give you a taste of what can be done with WS-BPEL. Then I'll introduce briefly its main activities. We'll see how to handle your process data and manipulate it and also how a particular process execution can be identified among all others. Finally we'll talk about how WS-BPEL introduces long-living transactions.
    A very simple yet demonstrative example
    After reading this chapter, most of you will probably think that the example I'm going to use is too simple and not realistic. I agree. But my goal here is just to give you a flavor of how WS-BPEL can be used, a realistic example would take more than all this article by itself.
    Now, you are the owner of a small bank granting loans to some of your customers. You have sales offices creating new customer contracts. You also have a web site and customers can directly ask for a loan online for small amounts. But before accepting a contract, some verifications are necessary. Those verifications are done using a risk assessment system maintained by a third party and by an in-house system that files the most tough requests. Loan specialists are part of your staff and then use this in-house system to take the final decision.
    So here is, step by step, the process that must be followed:
    1.     A loan request is issued, either from your web site of from one of your agencies. This request is made for a customer and for a certain amount.
    2.     A risk assessment system must be contacted to check whether the risk associated with the customer asking for the loan is high or low (probably based on his credit history).
    1.     If the loan amount is lower than $10,000 and the risk associated to the customer is low, the loan is directly approved (which saves time).
    2.     Otherwise, the loan request must be filed in your in-house system.
    1.     A loan specialist checks the request and gives his final decision.
    2.     The in-house system let you know the specialist's decision.
    3.     The response is sent to the customer.
    So how those pieces would be implemented in a "WS-BPEL aware" architecture? Here we go:
    •     One message triggered by your web site or your sales system and targeted at your process web service. It would hold at least the customer's name and the loan amount.
    •     One message triggered by the WS-BPEL engine to the risk assessment system to ask for the risk associated with the customer. If you pay your bills correctly, an answer message from this message should be expected.
    •     If needed, one message from the WS-BPEL engine to your in-house system to fill the loan request.
    •     One message from your in-house system to the process web service to give it the loan specialist's answer.
    •     Finally, one message back to your web site or to your sales system to give the final answer.
    One thing some of you probably already noticed is that when talking about the process I mentioned the "process web service". That's right, every process created inside a WS-BPEL engine is published as a web service with its own endpoint. When you want to send a message to your process, you actually send it to this web service.
    So now that you have a better idea of what it would take to implement this process in WS-BPEL, it's time to step back a bit.
    Private vs. Public Processes
    It's quite important to differentiate private and public processes (they are called executable and abstract in WS-BPEL). It is the same kind of opposition as between orchestration and choreography and it has a great impact on your architecture.
    Private processes manage services inside a given organization. They act as a service themselves and are centralized. As in an orchestra, there is a chief conductor (the process engine). Public processes manage services across several organizations. Each organization knows about it's own part of the process but doesn't know anything about the activities executed by other parties (for obvious confidentiality reasons). It's a peer-to-peer approach where you know the incoming and the outgoing messages, but nothing about what is done before, after or even meanwhile.
    WS-BPEL is quite good to handle private processes but doesn't perform so well for public ones (don't shoot me!). I have a feeling that even the members of the Oasis committee working on WS-BPEL don't know too much what to do with those. But actually, service choreography (public services) is not completely mature yet in terms of standards and market acceptance where as orchestration already has a widely embraced specification (WS-BPEL, in case you didn't realize) and many commercial implementations as well as open source ones (you may want to check Twister ). So good news, what you are going to learn in this article might prove useful.
    After those high-level considerations, we'll now look into WS-BPEL guts to see what's there and what we could use to build our process.
    WS-BPEL Activities
    In WS-BPEL, everything being part of your process body is an activity. There are basic activities (the ones that do something) and structured activities (the ones that organize basic activities without doing anything by themselves, just like your boss).
    Basic activities
    Invoking a web service is as simple as that:
    <invoke partnerLink="riskAssessor" portType="assessor" operation="assess"/>
    Pretty simple isn't it? In our initial example this declaration would be used to invoke the risk assessment system. Well, I'm actually cheating, you'll see later that you usually need a bit more (like input and output data) but this is a valid invocation.
    To wait for an incoming message, you'll write:
    <receive partnerLink="inhouseSystem" portType="inhousePort" operation="registerLoanRequest"/>
    That would be used to wait for the loan specialists' answer after registering the loan request in your in-house system. Now let's say that you want to send an immediate synchronous answer to this "receive". You'd write, after the receive:
    <reply partnerLink="inhouseSystem" portType="inhousePort" operation="registerLoanRequest"/>
    But how exactly does a WS-BPEL engine know, upon reception of a message, if it has to trigger the creation of a new process execution (a process instance)? Well, there's an attribute just for that: "createInstance".
    <receive partnerLink="loanRequester" portType="loanProcess" operation="processLoanRequest" createInstance="true"/>
    These 3 declarations use common attributes: partnerLink, portType and operation. If you know WSDL, you are already familiar with the port types and operations. Partner links have been introduced in WS-BPEL to model a two-way interaction between a process and a partner (a web service or another process). It lets you define the role of each of the two party in the interaction.
    There are two more basic activities that could prove useful (or at least one of the two):
    <wait until="'2002-12-24T18:00+01:00'"/>
    <empty/>
    Structured activities
    To start with, 3 basic ones: sequence, switch and while. If their behavior is not clear yet, here are examples:
    <sequence>
    <receive .../>
    <invoke .../>
    <invoke .../>
    </sequence>
    <switch xmlns:inventory="http://supply-chain.org/inventory" xmlns:FLT="http://example.com/faults">
    <case condition= "bpws:getVariableProperty(stockResult,level) > 100">
    … do something
    </case>
    <case condition="bpws:getVariableProperty(stockResult,level) >= 0">
    … do something else
    </case>
    <otherwise>
    … do the last thing
    </otherwise>
    </switch>
    <while condition="10 < bpws:getVariableData('loopVar', 'main', '/counter')">
    <assign>
    <copy>
    <from expression="bpws:getVariableData('loopVar', 'main', '/counter') + 1"/>
    <to variable="loopVar" part="main" query="/counter"/>
    </copy>
    </assign>
    </while>
    Another structured activity is 'pick'. It's just like several receive activities waiting at the same time with an additional alarm construct to avoid waiting forever the occurrence of a message:
    <pick>
    <onMessage partnerLink="" portType="" operation="">
    … do something
    </onMessage>
    <onMessage partnerLink="" portType="" operation="">
    … do something else
    </onMessage>
    <onAlarm until="2004-12-31T23:59:00">
    … hey, what the hell are you waiting for?
    </onAlarm>
    <pick>
    Like the receive activity, it's possible to declare a 'createInstance' attribute on the pick element to trigger the creation of a new process instance.
    Finally, for those who found all those activities way too structured and were missing a bit of anarchy, WS-BPEL introduced a flow activity. You basically declare all your activities as you like and then create links that take those activities as origin and target. The flow is also the only way to enable the execution of several parallel branches.
    Process Data
    To handle the process execution data, WS-BPEL introduces a new and unique concept: variables… Ok, that was just a bad attempt to keep you interested. Here is the context: your process engine must receive and send messages as defined by web services WSDL descriptions. To be able to do anything useful it must retain those messages and let you manipulate their content to create new messages or influence the process flow in variables. Therefore variables hold the state of a process execution. WS-BPEL variables can either hold a WSDL message or an arbitrary XML structure defined by a schema.
    An example for the declaration of a variable that can hold a WSDL message (the first stanza comes from the WSDL description, the second is a part of the process definition):
    <message name="creditInformationMessage">
    <part name="firstName" type="xsd:string"/>
    <part name="lastName" type="xsd:string"/>
    <part name="amount" type="xsd:integer"/>
    </message>
    <variable name="requestLoan" messageType="creditInformationMessage"/>
    So now, how do I stuff an incoming message into this variable? Here is the stuffing:
    <receive partnerLink="loanRequester" portType="loanProcess" operation="processLoanRequest" variable="requestLoan"/>
    Hey hey! That's our old receive! A variable attribute can be specified for a receive to hold the incoming message. For a reply, there's also a variable attribute to give the content of the message to send. And for an invoke, there's an inputVariable attribute to give the variable to send and an outputVariable to hold the response (for a synchronous invocation).
    We have variables to hold our message and we know how to give them a value upon reception of a message. But how do you initialize a variable when you want to send a message using it? How do you build a variable using parts of other variables? The answer is assignment. There's an additional activity I didn't mention yet (yes, I'm holding information) named assign. It lets you "copy and paste" the whole content of a variable, only a WSDL part in a message or even just an element (using Xpath). Again, examples are better than idle words:
    <assign>
    <copy>
    <from variable="ob1"/>
    <to variable="knob"/>
    </copy>
    <copy>
    <from variable="userInfo" part="homeAddress"/>
    <to variable="address"/>
    </copy>
    <copy>
    <from variable="house" part="bathroom" query="/shower/soap"/>
    <to variable="cleaningAgent"/>
    </copy>
    <copy>
    <from>hey you</from>
    <to variable="song" part="title"/>
    </copy>
    </assign>
    Once your variable has been set correctly, you can simply use it as inputVariable for an invoke.
    There's still one mystery unsolved in the way you can use variables in WS-BPEL: referencing them in expressions. Let's say you have a variable holding a specific value and want to use this value in the condition of a switch case, how do we do that? By using two functions:
    bpws:getVariableProperty ('variableName', 'propertyName')
    bpws:getVariableData ('variableName', 'partName'?, 'locationPath'?)
    The first function accepts the name of your variable and a property (we'll introduce property later but right now you just need to know that a property is a named XPath expression). The second accepts your variable, an optional part and an optional XPath expression relative to the part root.
    It's now time to see your first complete WS-BPEL example. It triggers the execution of a process upon reception of a message and iterates over a value contained in the message until 10. It's a very stupid example and it's probably the last thing you want to do with WS-BPEL (just as a reminder, WS-BPEL is used to orchestrate web services, not iterate over a value) but it illustrates almost everything we talked about in this paragraph.
    <?xml version='1.0' encoding="UTF-8"?>
    <process name="loop"
    targetNamespace="http://www.smartcomps.org/twister/example/loop/process/"
    xmlns="http://schemas.xmlsoap.org/ws/2003/03/business-process/"
    xmlns:def="http://www.smartcomps.org/twister/examples/loop/service/"
    abstractProcess="no">
         <variables>
              <variable name="loopVar" type="loopVarType"/>
         </variables>
         <correlationSets>
              <correlationSet name="counterCorrel" properties="def:counterId"/>
         </correlationSets>
         <sequence>
              <receive partnerLink="loopPartner" portType="loopPort" operation="loopOp"
              variable="loopVar" createInstance="true">
                   <correlations>
                        <correlation set="counterCorrel" initiate="yes"/>
                   </correlations>
              </receive>
              <while condition="10 > bpws:getVariableData('loopVar', 'main', '/counter')">
                   <assign>
                        <copy>
                             <from expression="bpws:getVariableData('loopVar', 'main', '/counter') + 1"/>
                             <to variable="loopVar" part="main" query="/counter"/>
                        </copy>
                   </assign>
              </while>
         </sequence>
    </process>
    As you probably already realized, data manipulation can quickly become a bit verbose. The WS-BPEL Technical Committee is currently working on it to have something easier for WS-BPEL 2.0.
    Correlation
    Correlation is a notion that can be a bit hard to grasp at first but is very important. So hang on and I'll do my best to be even more clear (somehow) than usually. During its execution, a process has to interact with several different services. This interaction is stateless so there is no way to make sure you will be addressed to a particular instance of a service. So let's imagine you own a wine store and have a web site allowing users from all over the world to order cheap and very good French wine. A service provided by your bank does the billing for you and you also use a shipper to send the orders all over the world. When a user places an order online, your web site generates an order id. But your bank doesn't know anything about your order id, it creates its own billing id corresponding to your order and you always must use this billing id when interacting with your bank (to confirm the transaction just after shipment for example). The shipper also creates his own shipment id that will be used when he confirms that the order has been sent.
    You want to use a WS-BPEL engine to handle those tasks automatically and orchestrate all the services (there's probably much more than three services and many steps involved). That's a really good idea!!! But how do you deal with all these different ids ? Yep, you guessed it: correlation. How does it work? A correlation is an unique way to identify the interaction of your process execution with a given party. A correlation is a list of property elements and a property element is a named XPath expression. This XPath expression must select a value in the exchanged messages that will be the value of the correlation for this particular message. So for our previous example we would define the following elements:
    <property name="billId" type="xsd:string"/>
         <propertyAlias propertyName="billId" messageType="createBillMessage" part="billInfo" query="billId"/>
         <propertyAlias propertyName="billId" messageType="confirmTransactionMessage" part="billId"/>
         <property name="shipId" type="xsd:string"/>
         <propertyAlias propertyName="shipId" messageType="shipMessage" part="shipId"/>
         <correlationSets>
              <correlationSet name="bankCorrelation" properties="billId"/>
              <correlationSet name="shipperCorrelation" properties="shipId"/>
         </correlationSets>
    A correlation can be composed of more than one property (separated by spaces). A property can also have several aliases for each type of message the correlation is used for.
    Usually a correlation is declared for each actor your process has to communicate with. The correlation is initiated during the first message exchange between your process execution and a party and is reused anytime your process execution sends a message to this party.
    Compensation
    I'm not going to detail this chapter as much as I did for the previous ones. This article is already far too long (and therefore too boring). Talking about compensation in a detailed manner would require another article like this one. But to whet your appetite, I'll tell you what its is and what it is the problem it has been designed to solve.
    Compensation is related to error handling. WS-BPEL processes are usually long-lasting (there could be days between 2 activities), they use asynchronous messages and interact with several different services. Introducing the concept of ACID transactions in this context is quite tough. Each of the services involved can locally use its own transaction but it's impossible within your process to control them (and you probably don't want to). So what can you do if you have three asynchronous operations, like 3 invoke / receive couples, that must be executed in an "all or nothing" fashion? How to cancel the two first operations that have already been committed if the third fails?
    Compensation is basically a set of activities attempting to cancel operations that have already been completed inside an unit of work. If an activity fails or a fault is thrown inside this unit of work, this set of activities is supposed to roll back everything that has been already completed in the unit of work in a way specific to your business case. You are the only one who really knows what to do if something goes wrong so you have to provide the necessary operations.
    But this system has important drawbacks:
    •     It is your responsibility to execute the right activities to handle the cancellation.
    •     All the services you are interacting with must support a way to rollback a previously committed transaction (most probably requiring some hard coding).
    Conclusion
    WS-BPEL has been a bit criticized principally for its absence of human participant interaction (as in conventional workflows), everything is a service. But whether you like it or not, it's already standard and if you use it for what it is good at, a pretty good one. Besides it's a good step in the right direction to standardize the BPM - SOA - 'call it what you like' space. And you can always rely on good products like Twister to introduce Worklist functionalities (remember, always a bit of marketing in a conclusion).
    Resources
    WS-BPEL Specification: http://www-106.ibm.com/developerworks/library/ws-bpel/
    Oasis WS-BPEL Technical committee: http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=wsbpel
    Twister WS-BPEL Open Source Implementation: http://www.smartcomps.org/twister

    Where can I get a document like this for the IQ775? I have asked HP several times, but get no response. I just want to know how to open the damned thing!

  • Can Stored procedure with IN and OUT Paramter can be used in JDBC LOOKUP?

    can Stored procedure with IN and OUT Paramter can be used in JDBC LOOKUP?

    Checking online help, I do not see any possibility.
    "Queries a data base by the given SQL statement."
    http://help.sap.com/javadocs/pi/pi711sp03/com/sap/aii/mapping/lookup/DataBaseAccessor.html
    -> execute

Maybe you are looking for

  • AIM on Treo Pro??

    How do I get AOL Instant Messanger (AIM) on the TREO PRO??? Post relates to: Treo Pro T850U (Unlocked) This question was solved. View Solution.

  • Error in global conversion rule for InfoObject 0INCOTERMS2

    When I activate BI content 2LIS_12_VCITM with transfer rule, The transfer rule was error with the message " Error in global conversion rule for InfoObject 0INCOTERMS2" and Mgs No. 263. The transfer rule cannot be activated. I checked the 0INCOTERMS2

  • What DVD-R speed for '011 Super Drive

    What DVD-R should I use for my 2011 MacBook Pro super drive 8X or is it capable of 16S?

  • Help me Urgent

    <b>BBKPF</b>                     BLDAT     Document date in document                BLART     Document type                BUKRS     Company Code                BUDAT     Posting date in the document                MONAT     Fiscal period            

  • Orphaned Group Headers in Variable length Subreports.

    I have a report is composed of a number of subreports that each have 3 nested groupings.  I am trying to figure out how to keep the subreports from printing GH1 on a page when GH3 will not fit on that same page of the main report.  I have read the kn