2017-04-10 19 views
0

我有一個JEE rest應用程序用於消耗和構建Web服務。當我使用了IBM應用程序的URL bluemix我有一個錯誤在本地服務器的WebSphere,並在BluemixSRVE0777E:應用程序類拋出的異常

SRVE0777E: Exception thrown by application class 

'tn.hunterViews.services.OfferService.afficherOffer:31' 
java.lang.NullPointerException: 
at tn.hunterViews.services.OfferService.afficherOffer(OfferService.java:31) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethodAccessorImpl.java:-2) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:497) 
at com.ibm.ws.jaxrs20.server.LibertyJaxRsServerFactoryBean.performInvocation(LibertyJaxRsServerFactoryBean.java:674) 
at [internal classes] 

OffersService.java

package tn.hunterViews.services; 

import java.util.List; 

import javax.ejb.EJB; 
import javax.ws.rs.GET; 
import javax.ws.rs.Path; 
import javax.ws.rs.Produces; 
import javax.ws.rs.core.MediaType; 
import javax.ws.rs.core.Response; 
import javax.ws.rs.core.Response.Status; 

import com.google.gson.Gson; 
import com.google.gson.GsonBuilder; 

import tn.hunterViews.business.OfferBusiness; 
import tn.hunterViews.business.OfferBusinessRemote; 
import tn.hunterViews.domain.Offer; 

@Path("/Offers") 
public class OfferService { 

    @EJB 
    OfferBusinessRemote ofR; 

    @GET 
    @Path("") 
    @Produces(MediaType.APPLICATION_JSON) 
    public Response afficherOffer(){ 
     return Response.status(Status.OK).entity(ofR.getOffer()).build(); 
    }  
} 

offersBuissness.java

package tn.hunterViews.business; 

import java.util.List; 

import javax.ejb.Stateless; 
import javax.ws.rs.client.Client; 
import javax.ws.rs.client.ClientBuilder; 
import javax.ws.rs.client.Entity; 
import javax.ws.rs.client.WebTarget; 
import javax.ws.rs.core.GenericType; 
import javax.ws.rs.core.MediaType; 
import javax.ws.rs.core.Response; 

import tn.hunterViews.domain.Offer; 
/** 
* Session Bean implementation class OfferBusiness 
*/ 
@Stateless 
public class OfferBusiness implements OfferBusinessRemote { 

    @Override 
    public List<Offer> getOffer() { 

     Client cl = ClientBuilder.newClient(); 
     WebTarget target = cl.target("https://pihunterviewsdotnet.mybluemix.net/api"); 
     WebTarget off = target.path("offerApi"); 
     List<Offer> offers = off.request(MediaType.APPLICATION_JSON).get(new GenericType<List<Offer>>(){}) ; 
     cl.close(); 
     return offers; 
    } 

    @Override 
    public boolean createOffer(Offer offer) { 
     Client cl = ClientBuilder.newClient(); 
      WebTarget target = cl.target("https://pihunterviewsdotnet.mybluemix.net/api"); 
     WebTarget off = target.path("offerApi"); 
     Response resp=target.request().post(Entity.entity(offer, MediaType.APPLICATION_JSON)); 

     if(resp.getStatus()!=201) 
     return false; 
     return true; 
    } 

    @Override 
    public boolean updateOffer(int id, Offer offer) { 
     if (id+""!=null && id!=0 && offer.getId()!=0) 
     { 
      Client cl = ClientBuilder.newClient(); 
      WebTarget target = cl.target("https://pihunterviewsdotnet.mybluemix.net/api/offerApi"+ id); 
      target.request().build("PUT", Entity.entity(offer, MediaType.APPLICATION_JSON)) 
      .invoke(); 
      return true; 
     } 

     return false; 
    } 

    @Override 
    public boolean deleteOffer(int id) { 
     if (id+""!=null && id!=0) 
     { 
     Client cl = ClientBuilder.newClient(); 
     WebTarget target = cl.target("https://pihunterviewsdotnet.mybluemix.net/api/offerApi"+ id); 
     target.request().delete(); 
     return true;} 
     return false; 
    }  

    @Override 
    public Offer findOfferById(int id) { 
     Client cl = ClientBuilder.newClient(); 
     WebTarget baseUrl = cl.target("https://pihunterviewsdotnet.mybluemix.net/api/offerApi"); 
     WebTarget getPostURL=baseUrl.path(""+id); 
     Response response = getPostURL.request(MediaType.APPLICATION_JSON).get(); 
     Offer offer=response.readEntity(Offer.class); 
     response.close(); 
     cl.close(); 
     return offer; 
    }  
} 

請幫我解決這個問題。謝謝。

+0

'ofR'可能是'在異常的行null'。你有沒有理由不期待? – nitind

回答

0

如果@EJB註釋不能被解析爲一個EJB,那麼你就 收到當服務器創建一個包含@EJB註解 類的實例失敗。因爲您看起來並不是 ,而是實例創建正常,只需 而沒有設置該字段,則服務器沒有在您的 類中掃描註釋,或者您擁有javax.ejb.EJB註記類 打包爲應用程序的一部分。

我會建議您檢查以下內容:

  • 確保自javax.ejb.EJB類沒有被包裝成你的註釋部分
  • 檢查您的WAR模塊中的web.xml有版本> 2.4。版本爲2.4(或更早版本)的WAR模塊將不會被掃描註解。
  • 檢查web.xml是否包含設置metadata-complete =「true」。此設置關閉註釋掃描。

來源http://www.developersite.org/102-95523-websphere-liberty

相關問題