Hi everyone!

I come to you asking for help. I'm trying to mount a web service which
consults a MySQL Database. I have already done the consult, but I can show
all data contained in the database, or I can show data according to
conditions setting these conditions manually in the code of the Java Class.
Nevertheless I need to pass in some way to my class a value in order to make
the SQL consult according to this.

Talking in code terms... I have the next code:

public class poDBService{

        public OrderData orderDetails(){
                Connection conn = (Connection)
MessageContext.getCurrentMessageContext().getProperty(
                        poDataServiceLifeCycle.DB_CONNECTION);
                if (conn!=null){
                        try{
                                String SQL = "SELECT * FROM `porder` WHERE 
order_id=1";
                                PreparedStatement statement = 
conn.prepareStatement(SQL);
                                ResultSet result = statement.executeQuery();
                                if (result.next()){
                                        OrderData orderData = new OrderData();
                                        
orderData.setOrderId(result.getInt("order_id"));
                                        
orderData.setSoldTo(result.getInt("soldTo"));
                                        
orderData.setShipTo(result.getInt("shipTo"));


I can access to my service through my browser in the address:

http://localhost:8080/axis2/services/poDataService/orderDetails

It correctly displays the corresponding data contained in the table porder

But I need to define my SQL sentence allowing to pass it the needed
parameter for the WHERE clause.
I already found that some people makes it with code like the next:

public class poDBService{

        public OrderData orderDetails(int id){
                Connection conn = (Connection)
MessageContext.getCurrentMessageContext().getProperty(
                        poDataServiceLifeCycle.DB_CONNECTION);
                if (conn!=null){
                        try{
                                String SQL = "SELECT * FROM `porder` WHERE 
order_id = "  + id ;
                                PreparedStatement statement = 
conn.prepareStatement(SQL);
                                ResultSet result = statement.executeQuery();
                                if (result.next()){
                                        OrderData orderData = new OrderData();
                                        
orderData.setOrderId(result.getInt("order_id"));
                                        
orderData.setSoldTo(result.getInt("soldTo"));
                                        
orderData.setShipTo(result.getInt("shipTo"));


With this code theoretically it would be possible to pass paramete id to the
service in the URL address:

http://localhost:8080/axis2/services/poDataService/orderDetails?id=1

But when I try to do it in this way Axis returns in my web browser a Soap
message like this:

<soapenv:Reason>
<soapenv:Text xml:lang="en-US">unknown</soapenv:Text>
</soapenv:Reason>

No error is thorwn in JBoss console window.

I'm using:
- JBoss-4.2.2.G.A.
- Axis2-1.3
- jdk1.5.0_17
- mysql-connector-java-5.1.7
- MySQL Server 5.1

Any ideas what is happening? or is there another way to do this?

Thanks in advance!

Ernesto J. Rivera
-- 
View this message in context: 
http://www.nabble.com/Question-about-exposing-a-database-as-a-web-service...-tp22345253p22345253.html
Sent from the Axis - User mailing list archive at Nabble.com.

Reply via email to