Its is *possible* to marshall a DB connection. (e.g. by representing a reference to it as an int ID, and sending it back for each query). However, its probably madness to do this.
On Wed, Jun 17, 2015 at 11:23 AM, Matt Chambers <[email protected]> wrote: > > Then you have to construct the connection object on the client side. > Additionally, making DB connections and then handing them down to the client, > even if it was possible and thankfully it isn’t, is not a good idea anyway. > It kinda defeats the purpose of thrift. > > >> On Jun 17, 2015, at 2:17 PM, reena upadhyay <[email protected]> wrote: >> >> I have built custom ODBC driver which works at client side, and there I >> would need a connection object. >> >> On Wed, Jun 17, 2015 at 11:43 PM, Stuart Reynolds <[email protected]> >> wrote: >> >>> This isn't going to work. A java.sql.Connection contains data that >>> can't be communicated outside of the process (e.g. file system >>> objects) >>> >>> This is a limitation of (almost all) network communication protocols, >>> not specifically thrift. >>> I guess, *why* do you want to send a Connection object out of your process? >>> There's probably something more sensible that you should send instead. >>> >>> >>> >>> >>> On Wed, Jun 17, 2015 at 11:00 AM, reena upadhyay <[email protected]> >>> wrote: >>>> Ok. Thanks for the reply. >>>> >>>> But my actual use case is: I want my service to return >>> java.sql.Connection >>>> object, and this data type is not supported in hive. How it represent it >>> in >>>> thrift file? >>>> >>>> .thrift file is: >>>> >>>> service databaseService{ >>>> Connection openConnection(),} >>>> >>>> >>>> The openConnection method code in service implementation class: >>>> >>>> @Override >>>> public Connection openConnection() throws TException { >>>> // here is the code that fetch the user object from database >>>> return connecton; >>>> } >>>> >>>> >>>> On Wed, Jun 17, 2015 at 11:19 PM, nash <[email protected]> wrote: >>>> >>>>> I typically do it like this: >>>>> >>>>> struct User { >>>>> 1: required string username; >>>>> 2: required i32 id; >>>>> 3: required string homedir; >>>>> } >>>>> >>>>> service UserService { >>>>> User getUser(1:i32 userid); >>>>> } >>>>> >>>>> When I compile the thrift file, it generates the User class. >>>>> >>>>> --nash >>>>> >>>>> On Wed, Jun 17, 2015 at 10:41 AM reena upadhyay <[email protected]> >>>>> wrote: >>>>> >>>>>> I'm developing a service using apache thrift. I have a service named >>>>>> getUser which returns User object. I couldn't find any way to define >>>>>> user-defined data type as a return type for my service defined in >>> .thrift >>>>>> file. >>>>>> >>>>>> user.thrift file looks like: >>>>>> >>>>>> service UserService{ >>>>>> User getUser(1:i32 userId),} >>>>>> >>>>>> When I am compiling the user.thrift to generate java source code, I am >>>>>> getting "*Type "User" has not been defined*" error. Can anyone please >>>>> help >>>>>> me, how to represent this user-defined java object as a data type in >>>>>> thrift. >>>>>> >>>>>> The getUser method code in service implementation class: >>>>>> >>>>>> @Override >>>>>> public User getUser(int user id) throws TException { >>>>>> // here is the code that fetch the user object from database >>>>>> return user; >>>>>> } >>>>>> >>>>>> This is my User class, whose object is being returned by service >>> getUser: >>>>>> >>>>>> public class User { >>>>>> >>>>>> private int userId;private String name;private String city;private >>>>>> String country;public int getUserId() { >>>>>> return userId;}public void setUserId(int userId) { >>>>>> this.userId = userId;}public String getName() { >>>>>> return name;}public void setName(String name) { >>>>>> this.name = name;}public String getCity() { >>>>>> return city;}public void setCity(String city) { >>>>>> this.city = city;}public String getCountry() { >>>>>> return country;}public void setCountry(String country) { >>>>>> this.country = country;} >>>>>> >>>>>> } >>>>>> >>>>> >>> >
