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;} >> > >> > } >> > >>
