Custom Exception এবং Global Exception Handling

Spring Web Services এর মধ্যে Exception Handling - স্প্রিং ওয়েব সার্ভিসেস (Spring Web Services) - Java Technologies

250

Spring Web Services (Spring WS) ব্যবহার করার সময় এমন কিছু পরিস্থিতি তৈরি হতে পারে, যেখানে কাস্টম এক্সসেপশন (Custom Exception) তৈরি এবং গ্লোবাল এক্সসেপশন হ্যান্ডলিংয়ের প্রয়োজন হয়। এটি ডেভেলপমেন্ট প্রক্রিয়াকে আরও কাঠামোবদ্ধ এবং কার্যকর করে।


Custom Exception তৈরি করা

কেন Custom Exception প্রয়োজন?

  • নির্দিষ্ট ধরণের ত্রুটি সনাক্তকরণ এবং হ্যান্ডলিং।
  • ত্রুটি মেসেজকে আরও অর্থবহ এবং ডেভেলপার-ফ্রেন্ডলি করা।
  • SOAP মেসেজে কাস্টম ফল্ট (Fault) মেসেজ প্রদান।

Custom Exception উদাহরণ

public class UserNotFoundException extends RuntimeException {
    private static final long serialVersionUID = 1L;

    public UserNotFoundException(String message) {
        super(message);
    }
}

SOAP Fault তৈরি করা

SOAP ওয়েব সার্ভিসে কাস্টম এক্সসেপশন হ্যান্ডল করতে SOAP Fault ব্যবহার করা হয়। এটি SOAP এর মাধ্যমে ক্লায়েন্টকে ত্রুটি সম্পর্কিত তথ্য প্রেরণ করে।

SOAP Fault কনফিগারেশন

@Endpoint
public class UserDetailsEndpoint {
    private static final String NAMESPACE_URI = "http://example.com/users";

    @PayloadRoot(namespace = NAMESPACE_URI, localPart = "GetUserDetailsRequest")
    @ResponsePayload
    public GetUserDetailsResponse getUserDetails(@RequestPayload GetUserDetailsRequest request) {
        if (request.getUserId() <= 0) {
            throw new UserNotFoundException("User not found with ID: " + request.getUserId());
        }

        GetUserDetailsResponse response = new GetUserDetailsResponse();
        response.setName("John Doe");
        response.setEmail("john.doe@example.com");
        return response;
    }
}

Global Exception Handling

Spring WS গ্লোবাল এক্সসেপশন হ্যান্ডল করার জন্য @ControllerAdvice ব্যবহার করে। এটি সমস্ত এক্সসেপশনকে একটি কেন্দ্রীভূত জায়গায় হ্যান্ডল করার সুযোগ দেয়।

Exception Resolver কনফিগারেশন

@Configuration
@EnableWs
public class WebServiceConfig extends WsConfigurerAdapter {
    @Bean
    public SoapFaultMappingExceptionResolver exceptionResolver() {
        SoapFaultMappingExceptionResolver exceptionResolver = new SoapFaultMappingExceptionResolver();

        Properties errorMappings = new Properties();
        errorMappings.setProperty(UserNotFoundException.class.getName(), SoapFaultDefinition.SERVER);
        exceptionResolver.setExceptionMappings(errorMappings);
        exceptionResolver.setDefaultFault(SoapFaultDefinition.SERVER);
        exceptionResolver.setOrder(1);
        return exceptionResolver;
    }
}

Custom Exception হ্যান্ডলিং গ্লোবালি কনফিগার করা

SOAP মেসেজে Fault Message প্রদান করতে, একটি @ControllerAdvice বা @EndpointExceptionResolver ব্যবহার করা হয়।

উদাহরণ: Exception Resolver

@Component
public class CustomSoapFaultExceptionResolver extends AbstractSoapFaultDefinitionExceptionResolver {

    @Override
    protected void customizeFault(Object endpoint, Exception ex, SoapFault fault) {
        if (ex instanceof UserNotFoundException) {
            fault.setFaultStringOrReason(ex.getMessage());
        }
    }
}

SOAP Fault Response উদাহরণ

SOAP ক্লায়েন্ট যদি একটি ভুল অনুরোধ পাঠায়, তবে নিচের মতো একটি SOAP Fault Response পাওয়া যাবে:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
    <SOAP-ENV:Body>
        <SOAP-ENV:Fault>
            <faultcode>SOAP-ENV:Server</faultcode>
            <faultstring>User not found with ID: -1</faultstring>
        </SOAP-ENV:Fault>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

সারাংশ

Spring Web Services-এ Custom Exception এবং Global Exception Handling ডেভেলপারদের এন্টারপ্রাইজ-গ্রেড SOAP সার্ভিস তৈরি করতে সাহায্য করে। এটি ত্রুটি সনাক্তকরণ ও হ্যান্ডলিংকে আরও কার্যকর এবং ক্লায়েন্টদের জন্য প্রাসঙ্গিক ফল্ট মেসেজ প্রদান নিশ্চিত করে।


Content added By
Promotion

Are you sure to start over?

Loading...