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

Reply via email to